Почему некоторые пакеты имеют дополнительные числа перед двоеточием в начале строки версии?

29

Я только что заметил, что Wine (и ряд других пакетов) изменили схему управления версиями примерно так:

1:1.6.2-0ubuntu3

Я все понимаю , после1: ... Но что делает 1:речь?

Кажется, он не отражает основную версию. Глядя на список ожидающих обновлений, есть такие версии, как: 2:4.1.3...и есть множество пакетов без #:префикса.

В чем дело?

Оли
источник
Похоже, что это специфично для Ubuntu, у packages.debian.org/sid/wine нет этого префикса
Сильвен Пино,
Это новое для Wine в Ubuntu (по состоянию на 14.04), но другие пакеты, такие как python3-uno( в Ubuntu и Debian ), имеют префикс последовательно.
Оли
Действительно, я нашел ответ на суперпользователя
Сильвен Пино
@Oli Это не ново для вина, оно всегда было там, но поскольку его значение было 0все время до 14.04, его не было записано в строке версии. Таким образом, вы можете думать о всех этих множествах пакетов без #:префикса, поскольку они на самом деле содержат 0:. Смотрите ответы, которые вы получили, чтобы лучше понять.
Раду Рэдяну

Ответы:

26

От 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.

Таким образом, это дополнительное число (в вашем случае 1) относится к компоненту эпохи, который может быть опущен, и в этом случае предполагается 0 . И так, если вы видите строку версии, которая выглядит так, 1.6.2-0ubuntu3вы можете подумать, что на самом деле это выглядит так 0:1.6.2-0ubuntu3. Чем это полезно и как это происходит: оно позволяет оставить ошибки в номерах версий более старых версий пакета, а также в схемах нумерации предыдущих версий пакета . Чтобы лучше понять, внимательно посмотрите на следующие пояснительные абзацы из Руководства по политике Debian - Управляющие файлы и их поля :

При сравнении двух номеров версий сначала сравниваются эпохи каждого из них, затем upstream_version, если эпоха равна, и затем debian_revision, если upstream_version также равна. эпоха сравнивается численно.

А также:

Обратите внимание, что цель эпох состоит в том, чтобы позволить нам оставить ошибки в нумерации версий и справиться с ситуациями, когда меняется схема нумерации версий. Он не предназначен для работы с номерами версий, содержащими строки букв, которые система управления пакетами не может интерпретировать (например, ALPHAили pre-), или с глупыми порядками.

Раду Рэдяну
источник
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.

Источник

Сильвен Пино
источник