Я только что заметил, что Wine (и ряд других пакетов) изменили свою схему управления версиями на что-то вроде:
1:1.6.2-0ubuntu3
Я все понимаю после после 1:
. .. Но к чему относится 1:
?
Кажется, он не отражает основную версию. Глядя на список ожидающих обновлений, есть версии вроде: 2:4.1.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-
), или с глупыми упорядочиваниями.
Это - эпоха. Это переопределяет версию в определении, которое из двух пакетов является более новым:
От 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.
Конкретный пример
Вот конкретный пример, чтобы ускорить ваше понимание.
Предположим, что исходный пакет имеет версии:
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? :-)