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


8

不久前,我在Debian机器上从源代码安装了ouchdb。看来安装正常,一切正常。

几周后,我想使用dpkg从.deb升级并安装。现在似乎一切都已安装在/opt。一切似乎都可以正常工作,但我真的不明白为什么要全部安装在下/opt。它不觉得“平稳”当事情被直接安装到作为/usr/local/bin/etc/var/log。与我之前编辑在/ etc / couchdb下安装的配置文件相比,配置更加麻烦

有人会介意向我解释为什么安装到/opt“是一件好事”,为什么这比以前的源安装更好?

我知道这是一个相当模糊的问题,但是我只能使用Linux而不是专家,也不了解安装到 /opt


也许缺少/ debian标签?
D4RIO 2011年

您是说在/ opt中安装了Debian软件包吗?如果是这样,那就做错了事。我还在/ opt中安装了一个Google Chrome应用程序(当前未安装)。软件包系统管理的所有内容都应进入主系统。
Faheem Mitha

在更仔细地看待这一点时,我在策略中找不到明确的声明,即不应将Debian软件包安装(无论是否正式)安装在/ opt中,尽管我有强烈的印象,不应这样做。网上有各种评论认为这样做是错误的。如果我发现更多确定的信息,我会发布。AFAIK,Debian不希望或要求非官方软件包安装在与官方软件包不同的地方。
Faheem Mitha

Answers:


10

文件系统层次标准给出的定义:

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

我的阅读方式是:

  • 标准系统应用程序应该加入/bin/usr/bin(暗示)
  • 第三方软件包应放入 /opt
  • /usr/local当系统管理员希望安装某些东西时,才应安装该东西

通过扩展,如果sysadmin使用dpkg或安装了某些内容rpm,则/usr/local默认情况下不应加入。

因此,可以说这是在做正确的事。


IBM的Websphere应用服务器进入/ opt。另外,当我安装IBM JDK之类的东西时,我将其放入/ opt / java中。
djangofan 2012年

5

Debian政策

9.1.2特定于站点的程序

根据FHS的要求,程序包不得将任何文件放入/usr/local,无论是通过将文件放入dpkg进行解压缩的文件系统归档中,还是通过在其维护程序脚本中对其进行处理。

没有针对的具体禁止/opt。政策还增加了

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

文件层次标准

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

再往下走

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

请注意,Policy是针对Debian本身的,但它通常对应于最佳实践建议。如果我正确阅读此书,后果是无法将二进制(deb)软件包安装到/usr/local,但可以安装,/opt只要不干扰sysadmin对空间的使用即可。

我个人认为,在/usr/local或中包含deb软件包是一个坏主意/opt。我不同意D4RIO的看法,他说:

有一个包的CouchDB为Debian(我的意思是,官方的),因此,如果您下载的其他,这是确定的,它必须安装在/opt/usr/local/bin两种。

通常,您不希望安装与同一软件相对应的两个不同的deb软件包,并且如果它们实际上是相同的软件包名称,则dpkg仍然不允许这样做。非官方的Debian软件包通常作为官方软件包提供(但并非总是如此),其名称与官方软件包相同。您只需安装一个或另一个,而不是两个都安装。

就其价值而言,我认为放入deb软件包/opt是个坏主意,而我最近看到的唯一一次出现在Google Chrome中。但是,Google并不总是遵循最佳做法。


完全同意不应将软件包安装到/ opt,特别是如果将文件也放置在/ usr / bin中的其他位置。Imho / opt应该包含完全自包含的软件,因此您只需从/ opt中删除即可将其从轨道中移出。
Arrowmaster 2011年

好的,非常感谢,但是默认情况下将其安装到/ opt。如果不是/ opt,那么应该将其安装在哪里?以及如何使用dpkg?

@Duke:如果可以获取deb软件包的源代码,则可以重建deb像常规软件包一样安装到系统中。如果您还不熟悉该过程,则将需要进行一些工作,但是imo正确的做法是在这里进行。
Faheem Mitha

1
不同意这个答案。在很多情况下,您需要安装两个版本的软件,您可以轻松地为特定的应用程序使用特定的python。本地系统管理员可能希望打包此python,它应该放在哪里?本地安装(make install)软件位于/ usr / local中,第三个打包的软件位于/ opt /中-软件包的定义保持广泛:通过dpkg,通过安装程序,通过PIP,通过(选择的插入包装系统)。我同意这是自包含“提供商/程序包”的良好做法。
ashwoods

4

/opt适用于第三方软件。有一个包的CouchDB为Debian(我的意思是,官方的),因此,如果您下载的其他,这是确定的,它必须安装在/opt/usr/local/bin两种。


2

即使不是Debian,Fedora包装指南对此也很清楚:

…任何Fedora软件包都不能在/ opt或/ usr / local下包含任何文件或目录…

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

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

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

我知道Fedora不是Debian,但我想在这种情况下,它们非常相似。特别是因为Debian的软件包检查工具Lintian对此有一个特殊的错误:dir-or-file-in-opt

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.