为版本使用非数字包组件背后的基本原理是什么?

zer*_*kms 7 ubuntu version package-management

在 ubuntu(不仅在 ubuntu 中)默认存​​储库中,您可以看到像2.2.14-5ubuntu8.12.

为什么维护者在中央包存储库中给出如此奇怪的版本?

2.2.14-42版本无法解决哪些任务?

Sté*_*las 9

命名空间:

  • 2.2.14 是来自上游包的版本号(来自 apache.org)
  • -5 是 debian 包版本
  • 在此基础上,Ubuntu 会进行一些修改,每次迭代都会增加版本号。 ubuntu8.12

如果 Debian 制作了 a-6并且 Ubuntu 选择接受它,那么您将2.2.14-6在 Ubuntu 中拥有 a并且可能有 a2.2.14-6ubuntu1等等,并且这个数字会更大,如果您希望它被apt.

如果您想自己进行修改,您可能需要添加自己的命名空间:2.2.14-5ubuntu8.12zerkms1

一旦 Ubuntu 发布 2.2.14-5ubuntu8.13 或 2.2.14-5ubuntu9 或 2.2.14-6,那将是一次升级。


gol*_*cks 8

版本字符串的一部分是“上游”版本。 上游意味着指向原始源,而下游意味着指向发行版包。我认为通常这中间没有任何东西,所以基本上有两个阶段(原始源代码和编译后的发行版包)。

例如,bash-4.2.39 就是这样。bash-4.2.39 的原始来源完全相同,并且来自同一个地方,无论您使用的是 Fedora、ubuntu、arch 还是其他任何东西。bash-4.2.39 只有一个来源。“4.2.39”就是我所说的上游版本号。

但是,该源可能可以通过多种不同方式进行编译(除了系统架构之外);当然,bash 就是这种情况。这是下游打包者做出的决定,他们也可能包含原始源中没有的东西(例如配置)。此时,为 ubuntu 打包的 bash 4.2.39 和为 Fedora 打包的 bash 4.2.39 之间可能存在明显差异(以及同一发行版之间的差异)。这主要由版本字符串的最后部分表示——“ubuntu8.12”或其他。此外,软件包编译的确切发行版和发行版很重要,因为它与此软件包所需的其他软件包(共享库)相匹配;即使有适用于 ubuntu 10 和 12 的 bash 4.2.39,它们也可能无法互换。

像“-42”这样的东西表示发行版下游的一些额外版本控制。这可能与配置差异、发行版补丁等有关,在这种情况下,相同的“-42”版本可能用于发行版的多个版本(及其派生)的多个存储库中。

这加起来是一个唯一的版本字符串,指示原始源版本包版本特定发行版+发行版版本