debian 软件包版本约定

ciz*_*ixs 52 package-management ubuntu 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
Run Code Online (Sandbox Code Playgroud)

第三列是version,但它以一种我无法理解的方式“搞砸了”。我的意思是,不同的包使用完全不同的命名规范。

以下是主要问题:

  1. 为什么有些版本号有ubuntu,有些没有?
  2. 所有特殊标点符号-~+是什么意思?
  3. 什么是alphabuilddfsg?我可以随便使用它们吗?
  4. vim和其他包有2:。这意味着什么?
  5. 当版本格式可能如此不同时,“版本比较”如何工作?

任何人都可以向我解释一下吗?或者哪里可以找到官方文档?

提前致谢。

Flu*_*lup 67

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时,通常都将debian_revision重新启动为 1 。

包管理系统将在字符串中的最后一个连字符(如果有)处将版本号分开,以确定upstream_versiondebian_revision。没有debian_revision相当于debian_revision为 0。

比较

比较两个版本号时,首先比较每个版本的 epoch,如果 epoch 相等,则比较upstream_version,如果upstream_version也相等,则再比较debian_revision。epoch 以数字方式进行比较。的upstream_versiondebian_revision部分通过使用以下算法包管理系统相比:

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

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

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

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

请注意,epochs 的目的是让我们在版本编号中留下错误,并应对版本编号方案发生变化的情况。它不打算处理包含包管理系统无法解释的字母字符串的版本号(例如ALPHApre-),或者处理愚蠢的排序。

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

  • 谢谢,这很有帮助。但是版本比较如何工作?数字、字母和 ~+,哪个先出现,哪个最后? (2认同)
  • 是否有在线工具可以测试这些版本字符串的排序方式? (2认同)

Cir*_*郝海东 17

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

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

    如果0,这意味着没有 Debian 软件包:它只存在于 Ubuntu 中。

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

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

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

    每次制作新的设置补丁时,这个数字都会增加。

  • ubuntuY 是可选的。

    如果不存在,则表示直接使用了 Debian 软件包。

    否则,这意味着这是应用在 Debian 补丁之上的第 Y 个 Ubuntu 补丁,就像 Debian 应用在真正的上游之上一样。

    YX增加时重置。

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

apt-get source gdb
Run Code Online (Sandbox Code Playgroud)

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

debian/patches/
Run Code Online (Sandbox Code Playgroud)

更有趣的是,您可以克隆bzr并查看所有 Ubuntu 版本的列表以及它们之间的变化:

bzr branch ubuntu:gdb
cd gdb
bzr log | less
Run Code Online (Sandbox Code Playgroud)

另见:https : //askubuntu.com/questions/620533/what-is-the-meaning-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