debian 软件包版本约定

debian 软件包版本约定

我使用的是 debian/Ubuntu,对软件包的版本感到困惑。使用dpkg -l命令时,我得到:

ii  vim                                 2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor
ii  vim-common                          2:7.3.429-2ubuntu2.1                Vi IMproved - Common files
ii  vim-runtime                         2:7.3.429-2ubuntu2.1                Vi IMproved - Runtime files
ii  vim-tiny                            2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor - compact version
ii  virt-what                           1.11-1                              detect if we are running in a virtual machine
ii  w3m                                 0.5.3-5ubuntu1                      WWW browsable pager with excellent tables/frames support
ii  watershed                           6                                   reduce superfluous executions of idempotent command
ii  wget                                1.13.4-2ubuntu1                     retrieves files from the web
ii  whiptail                            0.52.11-2ubuntu10                   Displays user-friendly dialog boxes from shell scripts
ii  whoopsie                            0.1.33                              Ubuntu crash database submission daemon
ii  wimlib9                             1.5.0-1~webupd8~precise             Library to extract, create, modify, and mount WIM files
ii  wimtools                            1.5.0-1~webupd8~precise             Tools to extract, create, modify, and mount WIM files
ii  wireless-tools                      30~pre9-5ubuntu2                    Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                       0.7.3-6ubuntu2.1                    client support for WPA and WPA2 (IEEE 802.11i)
ii  x11-common                          1:7.6+12ubuntu2                     X Window System (X.Org) infrastructure
ii  x11-utils                           7.6+4ubuntu0.1                      X11 utilities
ii  xauth                               1:1.0.6-1                           X authentication utility
ii  xbitmaps                            1.1.1-1                             Base X bitmaps
ii  xclip                               0.12-1                              command line interface to X selections
ii  xfonts-encodings                    1:1.0.4-1ubuntu1                    Encodings for X.Org fonts
ii  xfonts-utils                        1:7.6+1                             X Window System font utility programs
ii  xkb-data                            2.5-1ubuntu1.3                      X Keyboard Extension (XKB) configuration data
ii  xml-core                            0.13                                XML infrastructure and XML catalog file support
rc  xpdf                                3.02-21build1                       Portable Document Format (PDF) reader
ii  xterm                               271-1ubuntu2.1                      X terminal emulator
ii  xz-lzma                             5.1.1alpha+20110809-3               XZ-format compression utilities - compatibility commands
ii  xz-utils                            5.1.1alpha+20110809-3               XZ-format compression utilities
ii  zabbix-agent                        1:1.8.11-1                          network monitoring solution - agent
ii  zlib1g                              1:1.2.3.4.dfsg-3ubuntu4             compression library - runtime
ii  zlib1g-dev                          1:1.2.3.4.dfsg-3ubuntu4             compression library - development
ii  zsh                                 4.3.17-1ubuntu1                     shell with lots of features

第三列是version,但它完全“混乱”,我无法理解。我的意思是,不同的包使用完全不同的命名规范。

以下是主要问题:

  1. 为什么有的版本号有ubuntu,有的没有?
  2. 所有特殊标点符号-~+代表什么意思?
  3. alphabuild和 是什么dfsg?我可以随便使用它们吗?
  4. vim和其他软件包都有2:。那是什么意思?
  5. 当版本格式如此不同时,“版本比较”如何工作?

有人能给我解释一下吗?或者我可以在哪里找到官方文件?

提前致谢。

答案1

Debian 政策手册关于版本字段有这样的说法,它回答了你的问题的部分内容:

[格式] 1

...格式为:[epoch:]upstream_version[-debian_revision]

这里的三个组成部分是:

时代

这是一个(通常很小的)无符号整数。可以省略,在这种情况下假定为零。

当上游版本编号方案发生变化时,纪元会有所帮助,但必须谨慎使用。在没有首先在 debian-devel 上达成共识的情况下,您不应更改纪元,即使是实验性的。

上游版本

这是版本号的主要部分。.deb如果适用,它通常是生成文件的原始(“上游”)软件包的版本号。通常,它将采用与上游作者指定的格式相同的格式;但是,可能需要重新格式化以适应软件包管理系统的格式和比较方案。

下面描述了软件包管理系统相对于的比较行为upstream_versionupstream_version版本号部分是必需的。

必须upstream_version仅包含字母数字[6]和字符"."(句号)、"+"(加号)、"-"(连字符)、"~"(波浪号) 2,并且应以数字开头。如果没有,debian_revision则不允许使用连字符。

debian_修订版本

版本号的这一部分根据上游版本指定 Debian 软件包的版本。它只能包含字母数字和字符"+"(加号)、"."(句号)、"~"(波浪号),其比较方式与upstream_versionis 相同。

惯例是,debian_revision每次upstream_version增加时,都从 1 重新启动。

包管理系统将在字符串的最后一个连字符处将版本号分开(如果有的话),以确定 和upstream_versiondebian_revision没有 adebian_revision相当于 adebian_revision为 0。

存在该debian_revision部分表示该包为非本地包(请参阅源包)。不存在该部分表示该包为本地包。

[比较] 1

比较两个版本号时,首先比较各自的 epoch,然后upstream_version如果 epoch 相等,再比较debian_revision是否upstream_version也相等。epoch 以数值方式进行比较。软件包管理系统使用以下算法比较upstream_version和部分:debian_revision

字符串从左到右进行比较。

首先确定每个字符串的初始部分,这些部分完全由非数字字符组成。对这两个部分(其中一个部分可能为空)进行词汇比较。如果发现差异,则返回差异。词汇比较是 ASCII 值的比较,经过修改,所有字母都排在所有非字母之前,波浪号排在任何部分之前,甚至是部分的结尾。例如,以下部分按从最早到最新的顺序排序:、、、~~空 部分、。~~a~a[7]

然后确定每个字符串剩余部分的初始部分(该部分完全由数字字符组成)。比较这两个部分的数值,并将发现的任何差异作为比较结果返回。为此,空字符串(只能出现在被比较的一个或两个版本字符串的末尾)计为零。

重复这两个步骤(比较并删除初始非数字字符串和初始数字字符串),直到发现差异或两个字符串都用尽。

5.6.12.1. 应谨慎使用纪元

请注意,epoch 的目的是为了应对上游版本编号方案发生变化的情况,并允许我们遗漏严重错误。如果您认为增加 epoch 是正确的解决方案,您应该在这样做之前咨询 debian-devel 并达成共识(即使是在实验阶段)。

当需要回滚软件包时,不应使用纪元。在这种情况下,请使用惯例+really:例如,如果您已上传2.3-3,现在需要回滚到上游 2.2,请将恢复上传命名为2.3+really2.2-1。最终,当我们上传上游 2.4 时,该+really部分可以消失。

纪元也无法处理包含包管理系统无法解释的字母串的版本号(例如ALPHApre-),或者包含愚蠢的排序的版本号。[8]

此外,从Ubuntu 维护者手册

ubuntu字符串标记了其后面的内容与 Ubuntu 中添加的更改相关。

alpha字符串似乎没有任何特殊含义。

buildX后缀由 Ubuntu 使用,例如表示无变化重建

dfsg指的是已经修改的 为了遵守Debian 自由软件指南

脚注3

答案2

XubuntuY部分版本例如1ubuntu1

  • X是 Debian 软件包版本。大多数 Ubuntu 软件包都基于 Debian 软件包,这是一个“上游”发行版。

    如果0,这意味着没有 Debian 包:它只存在于 Ubuntu 中。

    X当实际上游版本更新时重置,例如从 Binutils 2.25 更新至 Binutils 2.26。

    Debian 版本之所以存在,是因为 Debian 可能会对软件包进行修补,以便其在 Debian 系统或安全版本中更好地运行。

    Debian 开发人员当然热衷于合并补丁以避免分叉。

    每次制作一组新的补丁时,这个数字就会增加。

  • ubuntuY是可选的。

    如果不存在,则表示直接使用 Debian 包。

    否则,这意味着这是在 Debian 补丁之上应用的第 Y 个 Ubuntu 补丁,就像 Debian 在真正的上游之上应用一样。

    Y增加时重置X

如果你通过以下方式获取包的源代码:

apt-get source gdb

您将在以下位置看到 Ubuntu 和 Debian 应用的补丁:

debian/patches/

更有趣的是,你可以克隆bzr并查看所有 Ubuntu 版本的列表以及它们之间的变化:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

也可以看看:https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

时代实际上代表什么

https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-the-front-of-their-version-string

相关内容