Ubuntu

debian 軟體包版本約定

  • November 13, 2020

我正在使用 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. 什麼是alpha,builddfsg? 我可以隨便使用它們嗎?
  4. vim和其他包有2:。這意味著什麼?
  5. 當版本格式如此不同時,“版本比較”如何工作?

誰能給我解釋一下?或者我在哪裡可以找到官方文件?

提前致謝。

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_versiondebian_revision。沒有debian_revision相當於debian_revision為 0。

比較

在比較兩個版本號時,首先比較每個版本的 epoch,如果 epoch 相等,則比較 upstream_version,如果upstream_version也相等,則再比較 debian_revision 。紀元以數字方式進行比較。包管理系統使用以下算法比較upstream_versiondebian_revision部分:

從左到右比較字元串。

首先,確定完全由非數字字元組成的每個字元串的初始部分。這兩個部分(其中一個可能為空)在詞法上進行比較。如果發現差異,則返回。詞法比較是對修改後的 ASCII 值的比較,以便所有字母排在所有非字母之前,並且波浪號排在任何內容之前,甚至是部分的結尾。例如,以下部分按從早到晚排序:~~~~a~、空部分、a

然後確定完全由數字字元組成的每個字元串的其餘部分的初始部分。比較這兩個部分的數值,並將發現的任何差異作為比較結果返回。出於這些目的,空字元串(只能出現在被比較的一個或兩個版本字元串的末尾)計為零。

重複這兩個步驟(比較和刪除初始非數字字元串和初始數字字元串),直到找到差異或兩個字元串都用完。

請注意,epochs 的目的是讓我們在版本編號中留下錯誤,並應對版本編號方案發生變化的情況。它的目的不是處理包含包管理系統無法解釋的字母字元串的版本號(例如ALPHAor pre-),或者處理愚蠢的順序。

ubuntu將表明該軟體包是專門為 Ubuntu 建構的。和字元串似乎沒有任何特殊含義,但alpha指的是經過修改以符合Debian 自由軟體指南的軟體包。build``dfsg

引用自:https://serverfault.com/questions/604541