不久前,我在我的 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
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对此有一个特殊的错误:目录或文件选择