为什么我的软件包安装到 /opt ?

为什么我的软件包安装到 /opt ?

不久前,我在我的 Debian 机器上从源代码安装了 couchdb。似乎安装正常并且一切正常。

几周后,我想使用 dpkg 从 .deb 升级并安装。现在一切似乎都已安装在/opt.这一切似乎工作正常,但我真的不明白为什么它全部安装在/opt.它感觉不像直接安装到/usr/local/bin/etc中那样“顺利” /var/log。比我之前编辑安装在 /etc/couchdb 下的配置文件时配置起来更麻烦

有人介意向我解释为什么安装是/opt“一件好事”以及为什么这是比以前从源代码安装更好的做事方式吗?

我知道这是一个相当模糊的问题,但我只擅长Linux而不是专家,并且不明白安装到背后的想法/opt

答案1

文件系统层次结构标准给出这些定义:

  • /opt:附加应用软件包
  • /usr/local:本地层次结构(供系统管理员在本地安装软件时使用)

我读到的方式是:

  • 标准系统应用程序应该进入/bin并且/usr/bin(隐含)
  • 第三方包应该进去/opt
  • /usr/local仅当系统管理员希望时才应安装某些内容

通过扩展,如果系统管理员使用dpkg或安装某些内容rpm,则默认情况下不应进入该状态/usr/local

所以可以说它正在做正确的事情。

答案2

Debian 政策

9.1.2 特定地点的程序

根据 FHS 的规定,软件包不得将任何文件放入 中/usr/local,无论是将它们放入文件系统存档中以由 dpkg 解压,还是在其维护者脚本中操作它们。

没有这样的具体禁止/opt。政策还增加

所有已安装文件和目录的位置必须符合文件系统层次结构标准 (FHS) 2.3 版,但下述例外情况以及这样做会违反 Debian 政策的其他条款的情况除外。

文件层次结构标准

目录/opt/bin/opt/doc/opt/include/opt/info/opt/lib/opt/man保留供本地系统管理员使用。

然后再往下

发行版可以在 中安装软件 /opt,但未经本地系统管理员同意,不得修改或删除本地系统管理员安装的软件。

请注意,策略适用于 Debian 本身,但它通常对应于最佳实践建议。如果我正确地阅读了这篇文章,结果是,将二进制(deb)软件包安装到 是不行的,但只要不干扰系统管理员对空间的使用,/usr/local就可以安装。/opt

/usr/local我个人的观点是,将 deb 包放在或中不是一个好主意/opt。我不同意 D4RIO 的说法:

Debian 有一个 Couchdb 软件包(我的意思是官方的),所以如果您下载了另一个软件包,没关系,它必须安装在/opt/usr/local/bin中。

您通常不希望两个不同的 deb 软件包对应于安装的同一软件,并且如果它们实际上是相同的软件包名称,dpkg 无论如何都不会允许。作为官方软件包提供的非官方 Debian 软件软件包通常(但并非总是)与官方软件包具有相同的名称;您只需安装其中之一,而不是同时安装两者。

无论如何,我认为放入 deb 包/opt是一个坏主意,最近我见过的唯一一次出现这种情况是在 Google Chrome 中。然而,谷歌并不总是遵循最佳实践。

答案3

/opt适用于第三方软件。 debian 有一个 couchdb 软件包(我的意思是官方的),所以如果您下载了另一个软件包,没关系,它必须安装在/opt/usr/local/bin中。

答案4

尽管它不是 Debian,Fedora 打包指南对此非常清楚:

…没有 Fedora 软件包可以在 /opt 或 /usr/local 下拥有任何文件或目录…

软件包不将内容放入 /opt 的原因非常简单:正如之前指出的,文件层次结构标准指出......

发行版可以在 /opt 中安装软件,但未经本地系统管理员同意,不得修改或删除本地系统管理员安装的软件。

这是软件包无法保证的,因为安装或更新可能会修改此类数据。

我知道 Fedora 不是 Debian,但我想在这种情况下,它们非常相似。特别是Debian的包检查工具Lintian对此有一个特殊的错误:目录或文件选择

相关内容