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

任何人都可以向我解释这个吗? 或者我可以在哪里find官方文件?

提前致谢。

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

格式

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

这三个部分是:

时代

这是一个单一(通常很小)的无符号整数。 它可以被省略,在这种情况下假定为零。 如果省略,那么upstream_version可能不包含任何冒号。 它提供了允许旧版本的软件包的版本号的错误,以及软件包以前的版本编号scheme。

upstream_version

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

下面描述包pipe理系统相对于upstream_version的比较行为。 版本号的upstream_version部分是强制性的。

upstream_version只能包含字母数字[36]和字符"." (句号), "+" (加号), "-" (连字符), ":" (冒号), "~" (代字号),以数字开头。 如果没有debian_revision,则不允许使用连字符; 如果没有纪元,那么冒号是不允许的。

debian_revision

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

这是可选的; 如果不存在则upstream_version可能不包含连字符。 这种格式表示一种软件是专门为Debian软件包编写的,其中Debian软件包源必须始终与原始源相同,因此不需要修订指示。

每当upstream_version增加时, 通常在1处重新启动debian_revision

包pipe理系统将在string的最后一个连字符(如果有的话)中分开版本号来确定upstream_versiondebian_revisiondebian_revision的缺失相当于debian_revision为0。

对照

比较两个版本号时,首先比较每个版本的历元,然后将upstream_version(如果历元相等)进行比较,如果upstream_version相等,则执行debian_revision 。 历元比较数字。 upstream_versiondebian_revision部分由包pipe理系统使用以下algorithm进行比较:

string从左到右进行比较。

首先确定完全由非数字字符组成的每个string的起始部分。 这两个部分(其中一个可能是空的)在词汇上进行比较。 如果发现差异,则返回。 词法比较是修改后的ASCII值的比较,以便所有字母都比所有非字母更早sorting,因此在任何事情之前,即使是零件的末端,也都会进行sorting。 例如,以下部分按从最早到最后的顺序sorting: ~~~~a~ ,空白部分a

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

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

请注意,时代的目的是让我们留下版本编号方面的错误,并应付版本编号scheme改变的情况。 它不打算处理包含pipe理系统无法解释的string的版本号(如ALPHApre- ),也不适用于愚蠢的sorting。

ubuntu会指出这个软件包是专门为Ubuntudevise的。 alphabuildstring似乎没有什么特别的含义,但是dfsg是指为了符合Debian自由软件指南而修改的软件包 。

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

这也被问到: https : //askubuntu.com/questions/620533/how-does-ubuntu-name-packages

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

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

    当真正的上游版本更新时, X重置,例如Binutils 2.25 t Binutils 2.26。

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

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

    每次创build一个新的补丁集时,这个数字都会增加。

  • ubuntuY是可选的。

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

    否则,这意味着这是在Debian补丁之上应用的Yth Ubuntu补丁,很像Debian在真正的上游应用。

    当X增加时,Y重置。

如果你得到一个包的来源:

 apt-get source gdb 

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

 debian/patches/ 

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

 bzr branch ubuntu:gdb cd gdb bzr log | less