it-swarm.cn

我应该把自己编译的软件放在哪里?

我需要在Fedora机器上编译一些软件。最好放在哪里,以免干扰打包的软件?

130
theotherreceive

经验法则,至少在基于Debian的系统上:

  • /usr/local用于“系统范围内”的内容,即/usr/local通常是发行版的默认$PATH,并且遵循标准的UNIX目录层次结构,其中包含/usr/local/bin/usr/local/lib等。

  • /opt表示您不信任的东西,它们带有按应用程序前缀的系统范围内的内容,即/opt/firefox-3.6.8,_/opt/mono-2.6.7等。存放在这里需要更仔细的管理,但也不太可能破坏您的系统,而且删除起来也更容易,因为您只需删除该文件夹就可以了。

92
directhex

如果您真的不想让它完全干扰,请不要将它放在$PATH

如果要在$PATH,至少请确保不要安装到/usr/local。我发现,即使发行版将其安装到/usr

我最喜欢的安装定制编译软件的方法是在我的$HOME 目录。这样,您不必使用Sudo进行任何操作,并且它与系统的其余部分很好地分开了。例如:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install

如果需要,可以添加/home/username/stage/bin到您的$PATH

50
Sandy

FHS表示将其放在/ usr/local中 发行版不应该涉及到它。 /usr/local/bin表示二进制文件/usr/local/src作为来源,/usr/local/lib用于库。请参阅 FHS规格 了解更多信息

21
xenoterracide

大多数时候,我喜欢将自己编译的内容放在/opt。这有点伪标准。您也可以考虑/usr/local,但我更希望将自己的内容隔离100%。

10
Scott Anderson

将它们放在/usr/local/src

我要做的是在此目录中提取源代码。它将创建一条类似

/usr/local/src/postgresql-8.3.7

然后创建一个符号链接到它:

/usr/local/src # ln -s  postgresql-8.3.7 postgresql

/usr/local/src/postgresql

当您需要在版本和文档之间弹出时,这种方式很有用。

9
Stephen Jazdzewski

这使我想起,我需要更频繁地使用checkinstall!这样我就照常做

 ./configure
 make

其次是

 Sudo checkinstall

创建一个。deb文件...

6
Kevin Cantu

[〜#〜] fhs [〜#〜]/usr/local/用于从源代码编译的应用程序,而/opt/用于操作系统供应商不支持的第三方应用程序。

5
Aaron Toponce

如果有可能,我建议您编译软件,然后创建FC软件包(我相信它使用yum安装软件包)。然后,您可以安装自己的已编译软件的软件包并删除它,而不会弄乱整个系统。

5
Eimantas

如果您希望能够轻松安装和删除自己构建的多个应用程序,则可以使用 Stow 作为简单的程序包管理器。

5
Daniel James

我建议两件事:

系统范围:使用 stow 并安装在/ usr/local/stow/package-version下。然后,您可以轻松地在版本之间切换。

在我的家中,或者如果我没有/ usr/local的写权限,我会亲自在〜/ .local下安装程序,这由 XDG标准 提示。

您也可以在本地使用存储,尽管我从未使用过:)

4
elmarco

实际上,从源tarball创建deb或rpm并不难。这样,您可以使用发行版的程序包管理器的功能来保持系统清洁。大多数时候,这就是我要做的:只需创建一个rpm。

3
wzzrd

我的设置与大多数人有所不同,因为我做了很多开发工作。我有一个/ home/jackson/bin /目录,我将东西安装到其中,并且我编辑了.bashrc并添加了以下内容:

export PATH=/home/jackson/bin/bin::$PATH
export LD_LIBRARY_PATH=/home/jackson/bin/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/home/jackson/bin/lib/pkgconfig:$PKG_CONFIG_PATH

我不会为所有事情都这样做,但是在开发过程中它会很好。

3
jacksonh

如果正在编译应用程序,则可以在PATH env变量中添加其可执行文件路径。这不会影响其他用户。

2
Hemant

总是可以选择“将其放入它的位置”,但首先要编写一个简单的rpm。

2
Nils

如果希望您的应用程序对系统上的所有用户可用,并且您具有必要的权限,请使用/ opt。如果希望该应用程序仅对您(和root)可用,请使用/ home/username

1
Silviu Bogan

编写RPM并不困难,它具有将物品放置在何处的准则,并使卸载快照变得容易。

如果执行此操作,请像通过打包系统的所有其他文件一样,将文件安装在/usr下而不是/usr/local下。

0
user55149

最简单的方法是获取源程序包(.src.rpm for RPMite),将其解压缩,将新的源代码/配置/所有内容打包到其中,适当更改版本并进行构建。安装此软件包可使您的软件包管理器了解新软件包,并考虑将其用于依赖项以及卸载/更新。

这是第一次麻烦,但是如果有新版本(或一些重要补丁)出现,则更新起来会更简单。另一个好处是您可以使用本地软件创建自己的存储库,以便共享,例如在实验室里的机器上。

0
vonbrand