为什么有些软件包在其版本字符串前面的冒号前有额外的数字?

Oli*_*Oli 30 packaging versions

我刚刚注意到 Wine(以及许多其他软件包)已将其版本控制方案更改为以下内容:

1:1.6.2-0ubuntu3
Run Code Online (Sandbox Code Playgroud)

我明白...之后的一切1:1:指的是什么?

它似乎没有反映主要版本。查看待定升级列表,有如下版本:2:4.1.3...并且有很多没有#:前缀的软件包。

这是怎么回事?

Rad*_*anu 27

来自man deb-version

NAME
       deb-version - Debian package version number format

SYNOPSIS
       [epoch:]upstream-version[-debian-revision]

DESCRIPTION
       Version  numbers as used for Debian binary and source packages
       consist of three components. These are:

       epoch  This is a single (generally  small)  unsigned  integer.
              It  may  be omitted, in which case zero is assumed.  If
              it is omitted then the upstream-version may not contain
              any colons.

              It is provided to allow mistakes in the version numbers
              of older versions of a package, and  also  a  package's
              previous version numbering schemes, to be left behind.
Run Code Online (Sandbox Code Playgroud)

因此,该额外数字(在您的情况下1)是指可能被省略纪元组件,在这种情况下假定为 0。因此,如果您看到一个看起来像的版本字符串,1.6.2-0ubuntu3您可以认为它实际上看起来像0:1.6.2-0ubuntu3. 这有什么帮助以及它是如何产生的:提供它以允许将旧版本包的版本号错误以及包的先前版本编号方案留在后面。为了更好地理解,请仔细查看Debian 政策手册 - 控制文件及其字段中的以下解释性段落:

当比较两个版本号,首先历元的每一个进行比较,然后将upstream_version如果历元是相等的,然后 debian_revision如果upstream_version也是相等的。epoch以数字方式进行比较。

和:

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


Syl*_*eau 14

这是时代。它会在确定两个包中的哪一个更新时覆盖版本:

deb-version手册页:

   epoch  This is a single (generally small) unsigned integer.  It may  be
          omitted,  in  which case zero is assumed.  If it is omitted then
          the upstream-version may not contain any colons.

          It is provided to allow mistakes in the version numbers of older
          versions  of  a  package,  and also a package's previous version
          numbering schemes, to be left behind.
Run Code Online (Sandbox Code Playgroud)

来源