在 FreeBSD 上哪里安装自定义软件包?

在 FreeBSD 上哪里安装自定义软件包?

在 Linux 中,根据文件系统层次结构标准/opt是附加应用程序软件包的指定位置。因此,在开发我自己的软件包(不依赖于其他任何东西)时,我会将其放置在 中/opt/somepackage,并在其下方具有我选择的层次结构。

根据上面的链接,FreeBSD 并不严格遵循 FHS,而是将第三方软件包安装到/usr/local. OPNsense 基于 FreeBSD,将自己的代码(至少部分)安装到/usr/local/opnsense. FreeBSD 上的联机hier帮助页没有提及/opt- 因此在该位置安装的软件包不太可能与其他任何东西发生冲突,但会引入一个顶级路径,几乎与直接安装到/somepackage.

FreeBSD 中合适的安装位置是什么?/usr/local/somepackage而不是/opt/somepackage,再次在下面有我选择的层次结构?

请注意,我看过以下帖子,它们提供了一些见解,但没有完全回答我的问题:

答案1

至少在 OpenBSD 上(我猜这同样适用于 FreeBSD),/usr/local本质上是由操作系统的包系统管理的。如果您的“定制软件包”将不是如果由包系统处理,则可能会与其他包发生冲突,例如具有相同名称的文件。因此,除非您正在构建要通过操作系统的软件包系统安装的软件包,否则我会坚持将其放在 下/opt,以确保它不会干扰其他软件包(或被干扰)。

答案2

/usr/localvs.的使用/opt/超越了 BSD,并且早于 Linux。

通常,这两个目录都用于安装操作系统不附带的软件。关于软件“不是由包管理器安装”的引用实际上意味着不是来自操作系统提供的存储库和包。许多第三方包管理器和存储库将安装到 /opt 中。

从历史上看,所有本地安装的(非发行版)软件包/usr/local通常都会转储到{bin,sbin,man,lib}某种层次结构中。

但这很快就会变得混乱,因为来自多个包的文件将全部混杂在一起,可能会互相干扰,并使更新路径不清楚。

因此开始了一种安装/usr/local/$packagename/{bin,lib,man}更好但仍然混乱的东西的做法。为了解决这个问题,鼓励使用 /opt 来解决这个问题,但这/usr/local/仍然是一团糟,但至少有一些包不在这个混乱之中。

但实际上,最终,您可以在任何地方安装软件,包括$HOME/mysillyapps/$package/{bin,man,lib}并且唯一的要求是您添加bin$PATH尽管其他环境也有帮助),因此使用/usr/local/or/opt是一种不可知的东西,这在任何地方都有效。

希望通过将 $packagename (或 $packagename-$version )添加到目录名称中,无论安装在何处,与包管理器安装的应用程序发生冲突的风险都会降低。 (当然你不是手动安装和包管理器安装同一个包!)

这里唯一与操作系统风格相关的是 /usr/local/bin 可能已经默认添加到 PATH 中。

相关内容