【问题标题】:When to use /opt? When to use /usr/local/ instead of /usr/ when creating Debian package何时使用 /opt?创建 Debian 软件包时何时使用 /usr/local/ 而不是 /usr/
【发布时间】:2019-11-14 07:00:16
【问题描述】:

我正在创建一个不属于官方 Debian 发行版的软件包(它是专有的,没有源代码),但可以从私人托管的存储库中获得。我想按照 Debian 打包说明进行文件放置,我需要一些帮助才能找到正确的文件。

根据Packaging Manuals,“附加应用程序软件包”位于/opt,而/usr/lib 用于打包应用程序,/usr/local/bin 用于本地软件。我正在寻找这些术语的定义,以解释如何对本地管理员使用软件包安装的第三方应用程序进行分类。

我不是在寻找意见,而是在官方文档中寻找定义/说明。我花了一些时间阅读一些东西,但我相信我错过了一些东西,因为它似乎肯定有明确的指示。

如果您认为任何位置都适合任何软件(但可能会有不同的意见),请按照“没有明确的规则,因为文档不一致”来回答基本问题。

【问题讨论】:

  • 感谢您澄清问题;我现在同意它主要不是基于意见的,并且已投票重新开放它。

标签: linux package debian filesystems deb


【解决方案1】:

我认为 Debian 打包手册(政策、开发者参考等)和 FHS 对此都不是很清楚,我猜前者主要是因为他们不关心那些不打算用于的包包含在分发中,因为这些政策/最佳实践不能轻易在那里执行。它们目前仅作为其对 FHS 的引用的一部分进行评论,而 Debian 旨在支持第三方和本地软件。

不过,这主要是一个约定问题。但与此相关的是 dpkg 的行为,因为它假定控制文件系统,并且如果它们也在 .deb 包中提供,则将覆盖文件系统上存在但未跟踪的文件。因此,约定是发行版只留下 /opt/usr/local,以保证让第三方项目或本地管理员在他们认为合适的时候使用它们.

/opt 层次结构通常通过解压缩第三方 tarball 或运行一些临时安装程序来放置东西来使用。 /usr/local 层次结构通常通过在本地构建项目并将它们直接安装在那里,或者通过直接添加本地脚本来使用。 FHS 以某种方式涵盖了这些内容。

最后真正重要的是不会有路径名冲突。因此,如果您将软件打包为.debs,那么 dpkg 将尊重这些,您可以将对象放在 /usr 下(我想说这是打包项目的预期位置,无论它们是否是 Debian 的一部分)。当然,如果您对此感到不舒服,您仍然可以将它们放在 /opt 下(/usr/local 似乎肯定是错误的),只要您可以控制系统参与其中以及最终可能会发生什么,f.ex.

这可能需要在 Debian 手册和/或 FHS 中明确说明,我将来可能会尝试这样做。

【讨论】:

  • 非常感谢您的回答。有人确认说明没有明确涵盖我的情况并且我没有遗漏明显的事情,这对我很有帮助。
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2020-03-30
  • 1970-01-01
  • 2016-05-22
  • 2018-01-15
相关资源
最近更新 更多