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

the*_*ive 141 compiling fhs software-installation directory-structure package-management

我需要在我的 Fedora 机器上编译一些软件。把它放在哪里以免干扰打包软件的最佳位置?

dir*_*hex 97

经验法则,至少在 Debian 风格的系统上:

  • /usr/local对于东西,这是“全系统” -即/usr/local往往是在发行版的默认$PATH,并遵循与标准UNIX目录层次结构/usr/local/bin/usr/local/lib等等。

  • /opt对于您不信任在系统范围内使用每个应用程序前缀的内容 - 即/opt/firefox-3.6.8,,/opt/mono-2.6.7等等。这里的东西需要更仔细的管理,但也不太可能破坏你的系统——而且更容易删除,因为你只需删除文件夹,它就消失了。


San*_*ndy 51

如果你真的不希望它干扰,不要把它放在你的$PATH.

如果你想要它$PATH,至少确保不要安装到/usr/local. 我发现即使发行版将许多软件安装到/usr.

我最喜欢的安装自定义编译软件的方法是在我的$HOME目录中。这样你就不必使用sudo任何东西,而且它与系统的其余部分很好地分开。例如:

mkdir ~/stage
./configure --prefix=/home/username/stage && make && make install
Run Code Online (Sandbox Code Playgroud)

如果你愿意,你可以添加/home/username/stage/bin到你的$PATH.

  • +1 用于使用您的主目录,因为它使事情变得更简单;-1 建议避免 $PATH -- 根据标准(例如,`/usr/local`),实际上存在“为本地安装保留”的目录。 (4认同)
  • 当然,使用主目录是最好的选择。国际海事组织。 (2认同)

xen*_*ide 22

FHS 说把它放在 /usr/local分发版不应该接触它的地方。 /usr/local/bin对于/usr/local/src源和/usr/local/lib库的二进制文件。有关更多信息,请参阅FHS 规范


Sco*_*ton 10

大多数时候,我喜欢将自己编译的东西放在/opt. 这是一个伪标准的地方。您也可以考虑/usr/local,但我更喜欢将我的东西 100% 隔离。

  • 发行版倾向于在 /opt(通常是专有包)[/opt](http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES) 中放很多东西,并没有说发行版不能碰它。但是它确实说 [/usr/local](http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY) (2认同)
  • 我从未见过发行版将内容放入“/opt”中,但是我多次看到“/usr/local”中散落着来自该发行版的垃圾 (2认同)

Ste*_*ski 9

把它们放到/usr/local/src.

我所做的是提取此目录中的源代码。它将创建一条路径,如

/usr/local/src/postgresql-8.3.7
Run Code Online (Sandbox Code Playgroud)

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

/usr/local/src # ln -s  postgresql-8.3.7 postgresql
Run Code Online (Sandbox Code Playgroud)

/usr/local/src/postgresql.

当您需要在版本和文档之间弹出您正在使用的版本时,以这种方式进行操作会有所帮助。


Aar*_*nce 6

根据FHS/usr/local/用于从源代码编译的应用程序,而/opt/用于操作系统供应商不支持的 3rd 方应用程序。


Eim*_*tas 5

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


Dan*_*mes 5

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


Kev*_*ntu 5

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

 ./configure
 make
Run Code Online (Sandbox Code Playgroud)

其次是

 sudo checkinstall
Run Code Online (Sandbox Code Playgroud)

创建一个.deb文件...

  • 不回答问题。 (3认同)