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

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

1:1.6.2-0ubuntu3

Я все понимаю после после 1:. .. Но к чему относится 1:?

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

Что происходит?

29
задан 18 June 2018 в 00:02

3 ответа

От 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-), или с глупыми упорядочиваниями.

0
ответ дан 18 June 2018 в 00:02

Это - эпоха. Это переопределяет версию в определении, которое из двух пакетов является более новым:

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

Источник

0
ответ дан 18 June 2018 в 00:02

Конкретный пример

Вот конкретный пример, чтобы ускорить ваше понимание.

Предположим, что исходный пакет имеет версии:

  • 2019.1
  • 2019.2
  • 1.2 (исходный пакет решил случайным образом изменить схему именования выпусков)
  • 1.3

Тогда Debian обрабатывает их как :

  • 0:2019.1 (обычно называется просто 2019.1, поскольку начальный 0: можно опустить)
  • 0:2019.2
  • 1:1.2 (Debian изменяет эпоху с 0 на 1, чтобы соответствовать новой схеме именования)
  • 1:1.3

Таким образом, мы по-прежнему можем четко знать порядок версий из строки версии пакета или различать их. вообще, если исходный пакет совершает смертный грех, фактически повторно используя выпуск старого имени в новой схеме.

Можете ли вы представить себе, с какими адскими вещами пришлось столкнуться разработчикам Debian? :-)

1
ответ дан 12 June 2020 в 07:57

Другие вопросы по тегам:

Похожие вопросы: