在 ubuntu(不仅是 ubuntu)默认存储库中,您可以看到像2.2.14-5ubuntu8.12
.
为什么维护者在中给出如此奇怪的版本中央包存储库?
2.2.14-42
该版本无法解决哪些任务?
答案1
命名空间:
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,这将是一个升级。
答案2
版本字符串的一部分是“上游”版本。 上游意味着朝向原始来源,并且下游意味着发行版包。我认为一般来说这之间没有什么真正的区别,所以基本上有两个阶段(原始源代码和编译的发行版包)。
例如,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”版本可能会在多个存储库中用于发行版的多个版本(及其派生)。
这加起来形成一个唯一的版本字符串,指示原始来源版本, 这封装版本,以及特定发行版 + 发行版版本。