我使用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
,但是这一切都以我无法理解的方式“搞砸”了。 我的意思是,不同的包使用完全不同的命名规范。
以下是主要问题:
ubuntu
的,有些不是? -~+
是什么意思? alpha
, build
和dfsg
? 我可以随便使用它们吗? vim
等包有2:
这意味着什么? 任何人都可以向我解释这个吗? 或者我可以在哪里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_version和debian_revision 。 debian_revision的缺失相当于debian_revision为0。
对照
比较两个版本号时,首先比较每个版本的历元,然后将upstream_version(如果历元相等)进行比较,如果upstream_version相等,则执行debian_revision 。 历元比较数字。 upstream_version和debian_revision部分由包pipe理系统使用以下algorithm进行比较:
string从左到右进行比较。
首先确定完全由非数字字符组成的每个string的起始部分。 这两个部分(其中一个可能是空的)在词汇上进行比较。 如果发现差异,则返回。 词法比较是修改后的ASCII值的比较,以便所有字母都比所有非字母更早sorting,因此在任何事情之前,即使是零件的末端,也都会进行sorting。 例如,以下部分按从最早到最后的顺序sorting:
~~
,~~a
,~
,空白部分a
。然后确定完全由数字字符组成的每个string的剩余部分的初始部分。 将这两部分的数值进行比较,并且作为比较的结果返回发现的任何差异。 为了这些目的,一个空string(只能出现在一个或两个正在比较的版本string的末尾)计为零。
重复这两个步骤(比较和删除最初的非数字string和初始数字string),直到find差异或两个string都用尽。
请注意,时代的目的是让我们留下版本编号方面的错误,并应付版本编号scheme改变的情况。 它不打算处理包含pipe理系统无法解释的string的版本号(如
ALPHA
或pre-
),也不适用于愚蠢的sorting。
ubuntu
会指出这个软件包是专门为Ubuntudevise的。 alpha
和build
string似乎没有什么特别的含义,但是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