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

评论

您可能还会发现此问题有用。

#1 楼

经验法则,至少在采用Debian的系统上: /usr/local往往是发行版的默认/usr/local,并遵循标准的UNIX目录层次结构,其中包含$PATH/usr/local/bin等。 /usr/local/lib/opt等。放入此文件夹需要更仔细的管理,但也不太可能破坏您的系统,并且更容易删除,因为您只需删除该文件夹即可。

评论


有趣的是,如果您进行sudo安装,许多程序/应用程序会自动建议安装到/ opt。

–朱洪波
18-09-10在8:28

#2 楼

如果您真的不想完全干扰它,请不要将其放在$PATH中的任何地方。我发现即使发行版将其安装在$PATH中,也可以找到很多软件。这样,您无需使用/usr/local进行任何操作,并且它与系统的其余部分非常好地分开了。例如:

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


如果需要,可以将/usr添加到$HOME中。

评论


当然,使用主目录是最佳选择。海事组织。

– Alex Bitek
2010年8月10日在20:24



+1同意。对于bash / ruby​​ / python脚本,我喜欢〜/ sbin;对于编译的安装,我喜欢〜/ opt / ...,在〜/ bin中带有别名。

–克里斯
2010年8月10日20:59

+1用于使用主目录,因为它使事情变得更简单; -1表示避免$ PATH的建议-根据标准(例如/ usr / local),实际上有一些目录“保留用于本地安装”。

–里卡多·穆里(Riccardo Murri)
2010年8月11日在8:34

我避免使用/ usr / local的建议是基于原始发布者的意愿(有点含糊),不干扰打包的软件。由于有很多打包的软件可以通过在/ usr / local或$ PATH中查找来“帮助”,因此我认为这是有干扰的。但这确实取决于一个人的个人需求和目标。在许多情况下,/ usr / local是一个很好的选择。

–桑迪
2010年8月11日13:05

没有人注意到注释2中字母“ s”的完全误解。应该删除

– Northstrider
17 Mar 5 '17在21:18



#3 楼

FHS表示将其放在/ usr / local中,发行版不应该使用它。 /usr/local/bin用于二进制文件/usr/local/src用于源文件,/usr/local/lib用于库文件。有关更多信息,请参见FHS规范

评论


那配置呢?说我没有使用软件包管理器安装MySQL,是否仍应使用/ etc / mysql进行配置?

–Hubro
15年7月1日在4:38

我只是注意到默认情况下有一个/ usr / local / etc文件夹,我想我应该使用它... :-)

–Hubro
2015年7月1日在4:40

#4 楼

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

评论


发行版倾向于在/ opt(通常是专有软件包)中放入很多东西,/ opt并不表示发行版无法触摸它。但是它确实说关于/ usr / local

– xenoterracide
2010年8月10日在20:04

我从未见过将发行版放入/ opt的发行版,但是我看过很多次/ usr / local都散布着确实来自发行版的垃圾

–斯科特·安德森(Scott Anderson)
2010年8月10日在20:07



发行版,我习惯将Java放在/ opt中,我也曾经在其中看到过acrobat reader。如果他们将内容放在/ usr / local中,则它们将被FHS忽略,FHS表示需要安全,以免在系统更新中被覆盖。

– xenoterracide
2010年8月10日在20:10

我猜对每个人来说。 FHS很好,但我认为有时它会被忽略。

–斯科特·安德森(Scott Anderson)
2010年8月10日在20:12

我所见过的唯一发行包位于/ usr / local中,是与标准树中的目录并行的目录层次结构,甚至还有诸如TeX之类的索引文件。

–菲尔·米勒(Phil Miller)
2010-08-10 20:14



#5 楼

将它们放在/usr/local/src中。

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

/usr/local/src/postgresql-8.3.7


的路径,然后我创建一个符号链接:

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


做您在/usr/local/src/postgresql中的所有建筑物。

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

评论


+1说明您的基本原理以及OP可能如何应用它,包括版本控制。

– Samt
2010年8月10日23:07

#6 楼

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

#7 楼

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

#8 楼

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

#9 楼

这使我想起,我需要更频繁地使用checkinstall!这样,我只需执行通常的操作,然后再执行

 ./configure
 make


来创建.deb文件。 ..

评论


不回答问题。

– JBentley
19年2月15日在17:24

#10 楼

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

您也可以在本地使用stow,尽管我从没有使用过:)

#11 楼

我的设置与大多数人有所不同,因为我做了很多开发工作。我有一个/ home / jackson / bin /目录,我将其安装到其中,并且我已经编辑了.bashrc并添加了以下内容:适用于所有功能,但在开发过程中很不错。

#12 楼

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

#13 楼

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

评论


我不知道为什么要投反对票?为“平衡” +1

– phunehehe
2010年8月11日在7:04



我也想知道为什么:-)。我在没有安装权限的情况下使用了相同的解决方案来使用cscope。

– Hemant
2010年8月11日在7:14

@phunehehe可能是因为它甚至没有尝试回答问题。问题问在哪里放置软件。该答案提示您将其放置在某个地方后可以做什么。可以通过提供有关使用哪些文件夹的一些建议来改进它。

– JBentley
19年2月15日在17:31



#14 楼

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

#15 楼

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

#16 楼

最简单的方法是获取源程序包(RPMite为.src.rpm),将其解包,将新的源程序/配置/所有内容打包,适当地更改版本并进行构建。安装此软件包可使您的软件包管理器了解新软件包,并考虑将其用于依赖项并进行卸载/更新。 )问世,那么更新起来就更简单了。另一个好处是您可以使用本地软件创建自己的存储库,以便共享,例如通过实验室中的机器。

#17 楼

编写RPM并不困难,它具有放置位置的准则,并且可以卸载快照。通过包装系统的其他文件。