debian软件包版本约定


35

我正在使用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. 什么是alphabuilddfsg?我可以随便使用它们吗?
  4. vim等包都有2:。这意味着什么?
  5. 当版本格式如此不同时,“版本比较”如何工作?

有人可以向我解释一下吗?或者在哪里可以找到正式文件?

提前致谢。


您的意思是:“为什么里面有Ubuntu,却没有?”
Ciro Santilli新疆改造中心法轮功六四事件

1
@ CiroSantilli709大抓捕六四事件法轮功,即为什么有些版本号的后缀包含单词,ubuntu而有些则没有。
rakslice

Answers:


50

Debian政策手册》中有关于版本字段的说法,它回答了您的问题的某些部分:

格式

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

这里的三个组成部分是:

时代

这是一个(通常很小的)无符号整数。在假定为零的情况下可以省略。如果省略它,那么上游版本可能不包含任何冒号。提供该功能是为了保留包的较早版本的版本号以及包的先前版本编号方案中的错误。

上游版本

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

包管理系统相对于上游版本的比较行为描述如下。版本号的上游版本部分是必需的。

所述upstream_version可以仅含有字母数字[36]和人物"."(句号), "+"(加), "-"(连字符), ":"(结肠), "~"(波浪号),并应以数字开头。如果没有debian_revision,则不允许使用连字符。如果没有纪元,则不允许使用冒号。

debian_revision

版本号的这一部分基于上游版本指定Debian软件包的版本。它可能仅包含字母数字和字符"."(句号),"+"(加号),"~"(波浪号),并且以与上游版本相同的方式进行比较。

它是可选的;如果不存在,则上游版本可能不包含连字符。这种格式表示了一种情况,即专门为Debian软件包编写了一个软件,其中Debian软件包的源代码必须始终与原始源代码相同,因此不需要任何修订说明。

通常,每次增加上游版本时,都将debian_revision设置为1 。

软件包管理系统将在字符串的最后一个连字符(如果有的话)处将版本号分开,以确定上游版本debian_revision。没有debian_revision等效于debian_revision为0。

比较方式

比较两个版本号时,首先比较每个版本的时期,如果时期相等,则比较上游版本,如果上游_版本也相等,则比较debian_revision。对时代进行数字比较。的upstream_versiondebian_revision部分通过使用以下算法包管理系统相比:

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

首先,确定完全由非数字字符组成的每个字符串的初始部分。这两个部分(其中一个可能为空)在词法上进行了比较。如果发现差异,则将其返回。词法比较是对修改后的ASCII值的比较,这样所有字母的排序都比所有非字母的排序更早,并且代字号的排序比任何非字母的排序早,甚至是部分的结尾。例如,下面的部分是按排序顺序从最早到最晚:~~~~a~,的空白部分,a

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

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

请注意,纪元的目的是让我们在版本编号中留下错误,并应对版本编号方案更改的情况。它不打算处理包含软件包管理系统无法解释的字母字符串的版本号(例如ALPHApre-),也不能应付愚蠢的命令。

ubuntu将指示该软件包是专门为Ubuntu构建的。在alphabuild琴弦似乎并没有什么特别的意思,只是dfsg指已包修改是否符合Debian自由软件指导方针


1
谢谢,这很有帮助。但是版本比较如何工作?数字,字母和〜+,哪一个先到最后?
cizixs 2014年

我将答案中的引号扩展为包括手册中描述比较行为的部分。
2014年

2
是否有在线工具可以测试这些版本字符串的排序方式?
尼克(Nick)

您能否粘贴相同的示例?例如,将上面的某些版本解析为单独的部分。如果上游版本和debian版本都可以包含-和+,我们如何知道分隔符在哪里?此外,第一个链接似乎已断开。
fersarr

@fersarr我将把示例留给其他人,但我已经修复了链接。
凌晨

10

XubuntuY 版本的一部分,例如1ubuntu1

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

    如果0为,则表示没有Debian软件包:它仅存在于Ubuntu中。

    X 当实际的上游版本(例如Binutils 2.25)更新为Binutils 2.26时重置。

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

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

    每次制作新的补丁程序时,此数目都会增加。

  • ubuntuY 是可选的。

    如果不存在,则意味着直接使用了Debian软件包。

    否则,这意味着这是在Debian补丁程序之上应用的Yth Ubuntu补丁程序,就像Debian在实际上游应用程序一样。

    YX增加时重置。

如果您通过以下方式获得软件包的来源:

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-意思-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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.