考虑到我今天遇到的以下情况,我想了解 APT 包的总体管理方式:
我试图将 MongoDB 添加到我的 Debian 机器上。apt search mongodb
显示了好看的结果,在尝试安装之前,我阅读了MondoDB 文档,其中指出:
按照以下步骤在您的系统上运行 MongoDB Community Edition。这些说明假设您使用的是官方的 mongodb-org 包——而不是 Debian 提供的非官方的 mongodb 包——并且使用的是默认设置。
由此,我理解并惊讶于我从 Debian's 得到的东西apt install
是应用程序开发人员非官方的。这听起来比“不推荐”更糟糕。
我确实了解 Debian APT 软件包存储库倾向于显示旧版本,并且永远不会赶上最新的前沿更新。有很多方法可以解决这个问题,但现在我对非官方的词感到担忧。这是否意味着 APT 存储库中与 MongoDB(或任何其他应用程序)相关的软件包未得到应用程序开发人员的正式批准?或者它是由开发人员正式发布但“避免因为它不是最新版本”?还是有人(某个实体?)从官方安装包中复制并粘贴到 APT?
我并不是想了解 MongoDB 的这种特定情况。相反,我想了解应用程序和 APT 的整体“政治”。它是如何工作的,它应该如何工作?
如果这是一个菜鸟问题,那么我很抱歉,但我在网上找不到很好的解释。任何链接或参考将不胜感激。
所有发行版(不仅是 Debian)中的包通常不是由应用程序的开发人员打包,而是由发行版社区的成员打包,通常称为打包者或包维护者。有时应用程序开发人员也可以是某些发行版中的打包者,但这不是规则,开发人员绝对不能在所有发行版中维护他们的应用程序(例如,我在 Fedora 中维护我的软件,但它是由其他人在 Debian 中打包的)。
当谈到“批准”和“官方”或“非官方”时。我们在这里谈论的是免费软件,许可证允许分发软件,因此您不需要任何人的批准即可打包软件进行分发。开发人员可能不同意他们的软件被打包和发布的方式,但这就是他们所能做的。
我不确定是什么让这个包(非)官方。我猜所有的包在理论上都是非官方的,因为它们是由第三方制作的。这可能取决于您对(非)官方的定义。
可能导致打包人员和开发人员之间紧张的一件事是发布周期。发行版(尤其是像 Debian Stable 或 RHEL/CentOS 这样的“稳定”发行版)有自己的发布周期以及对软件和 API稳定性的承诺,这通常与上游不同发布周期。这就是为什么您会在发行版中看到旧版本的原因,通常带有一些错误修复反向移植。有时上游开发人员不喜欢这样,因为他们会收到已经修复但未向后移植的错误报告等。有时打包人员会自行决定编译时间选项和其他改变软件(默认)功能的事情,这也很烦人。因此,开发人员会告诉您“使用我们的'官方'包而不是您的分发包”之类的内容,由用户决定什么对他们最有利。
主要问题是:“官方”根据谁?某事是否“官方”很大程度上取决于您要问的是哪个“办公室”!
MongoDB 开发人员发布的软件包是 MongoDB 开发人员所说的“官方”软件包。Debian 开发人员分发的软件包是 Debian 开发人员所说的“官方”软件包。
在某种全球意义上,两者都不比另一个更“官方” 。
分发包可能与供应商包不同的原因有很多:
这意味着,例如,Debian 8 仍然具有 ELTS 支持,但 MongoDB 中没有针对它的软件包。
现在,事实证明,在这种特殊情况下,Debian 实际上已经停止提供自己的软件包,因为MongoDB 更改为不同的许可证。该
mongodb
软件包的最新版本在 Debian 9 中。Debian 本身不再为 Debian 10、Debian 11 或开发中的 Debian 12 中的 MongoDB 提供软件包。但是,Debian 9 中的软件包可用于 AMD64、ARM64、 x86 和 PowerPC 64 位 little-endian,而 MongoDB 开发人员提供的软件包可用于 Debian 9 和 10,但仅适用于 AMD64。一般来说,分销商提供自己的软件包的主要原因是因为分销商与软件供应商有不同的关注点和约束,因此软件供应商提供的软件包往往不能满足这些关注点和约束。
请记住,大多数分发包是由无偿志愿者创建的,并且大多数分发包都希望提供更多包,但缺乏这样做的人力。如果有一种方法,他们可以直接从软件供应商处获取未经修改的软件包并将它们放入分发中,他们通常会这样做,而不是将精力集中在其他地方。
发行版维护者可以应用他们自己的一组补丁,上游可能不认可这些补丁。这可能会导致这样的情况。
发行版也可能对他们提供的软件版本有某些政策,这些政策可能与原始创建者的想法不一致。
Debian 有很多相关的事件:
一旦你更好地了解开源,它就不会那么乐观了。
根据经验,这个问题的答案是“否”,不仅是 Debian,它也适用于其他发行版。
例如,检查https://bugzilla.kernel.org
请使用您的发行版的错误跟踪工具 此 bugzilla 用于报告针对上游 Linux 内核的错误。
的确。“自由软件”(在 GPL 意义上)意味着任何人都可以获取您的源代码,对其进行修改,然后在未经您批准甚至根本不通知您的情况下重新分发它。
几乎所有开源项目的开发人员都要求用户在报告错误之前尝试最新的可用版本。从这个意义上说,任何第三方包都是非官方的:如果它们工作,对你有好处,如果它们不工作,你应该将此报告给包维护者,而不是开发人员。