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
,但以我無法理解的方式完全“搞砸”了。我的意思是,不同的包使用完全不同的命名規範。以下是主要問題:
- 為什麼有些版本號有
ubuntu
,有些沒有?- 所有特殊標點符號
-~+
是什麼意思?- 什麼是
alpha
,build
和dfsg
? 我可以隨便使用它們嗎?vim
和其他包有2:
。這意味著什麼?- 當版本格式如此不同時,“版本比較”如何工作?
誰能給我解釋一下?或者我在哪裡可以找到官方文件?
提前致謝。
Debian 政策手冊對版本欄位有這樣的說法,它回答了您問題的某些部分:
格式
格式為:
[epoch:]upstream_version[-debian_revision]
這裡的三個組件是:
時代
這是一個(通常很小的)無符號整數。它可以省略,在這種情況下假定為零。如果省略,則upstream_version可能不包含任何冒號。提供它是為了允許遺留軟體包舊版本的版本號以及軟體包以前的版本編號方案中的錯誤。
上游版本
這是版本號的主要部分。如果適用的話,它通常是生成 .deb 文件的原始(“上游”)包的版本號。通常這將與上游作者指定的格式相同;但是,它可能需要重新格式化以適應包管理系統的格式和比較方案。
下面描述包管理系統相對於upstream_version的比較行為。版本號的upstream_version部分是強制性的。
upstream_version可能只包含字母數字
$$ 36 $$和字元
"."
(句點),"+"
(加號),"-"
(連字元),":"
(冒號),"~"
(波浪號)應該以數字開頭。如果沒有debian_revision則不允許使用連字元;如果沒有紀元,則不允許使用冒號。debian_revision
這部分版本號根據上游版本指定了 Debian 軟體包的版本。它可能只包含字母數字和字元
"."
(句點)、"+"
(加號)、 (波浪號),並以與upstream_version"~"
相同的方式進行比較。它是可選的;如果它不存在,則upstream_version可能不包含連字元。這種格式代表了一個軟體被專門編寫為 Debian 軟體包的情況,其中 Debian 軟體包源必須始終與原始源相同,因此不需要修訂指示。
每次增加upstream_version時,通常都會在1 處重新啟動debian_revision。
包管理系統將在字元串中的最後一個連字元(如果有)處將版本號分開,以確定upstream_version和debian_revision。沒有debian_revision相當於debian_revision為 0。
比較
在比較兩個版本號時,首先比較每個版本的 epoch,如果 epoch 相等,則比較 upstream_version,如果upstream_version也相等,則再比較 debian_revision 。紀元以數字方式進行比較。包管理系統使用以下算法比較upstream_version和debian_revision部分:
從左到右比較字元串。
首先,確定完全由非數字字元組成的每個字元串的初始部分。這兩個部分(其中一個可能為空)在詞法上進行比較。如果發現差異,則返回。詞法比較是對修改後的 ASCII 值的比較,以便所有字母排在所有非字母之前,並且波浪號排在任何內容之前,甚至是部分的結尾。例如,以下部分按從早到晚排序:
~~
、~~a
、~
、空部分、a
。然後確定完全由數字字元組成的每個字元串的其餘部分的初始部分。比較這兩個部分的數值,並將發現的任何差異作為比較結果返回。出於這些目的,空字元串(只能出現在被比較的一個或兩個版本字元串的末尾)計為零。
重複這兩個步驟(比較和刪除初始非數字字元串和初始數字字元串),直到找到差異或兩個字元串都用完。
請注意,epochs 的目的是讓我們在版本編號中留下錯誤,並應對版本編號方案發生變化的情況。它的目的不是處理包含包管理系統無法解釋的字母字元串的版本號(例如
ALPHA
orpre-
),或者處理愚蠢的順序。
ubuntu
將表明該軟體包是專門為 Ubuntu 建構的。和字元串似乎沒有任何特殊含義,但alpha
指的是經過修改以符合Debian 自由軟體指南的軟體包。build``dfsg