Что означают двоеточие (:) и тире (-) в номере версии Ubuntu dpkg?

Я пытаюсь получить номер версии уже установленного пакета, чтобы создать список зависимостей для dpkg.

Если я наберу «dpkg -l | grep libqtcore4» в своем терминале, я получу следующий результат:

ii  libqtgui4       4:4.7.4-0ubuntu8      Qt 4 GUI module
ii  libqtgui4:i386  4:4.7.4-0ubuntu8      Qt 4 GUI module

Мой вопрос; что означает двоеточие (:) в номере версии и что означает -0ubuntu в конце?


person Andy J    schedule 08.03.2012    source источник
comment
4: будет основной версией 4, 4.7.4 — фактической версией программного обеспечения, и к исходной версии будет применен собственный набор патчей Ubuntu -0ubuntu8.   -  person Marc B    schedule 08.03.2012
comment
Очень хорошее объяснение находится в askubuntu.com/questions/441879/   -  person pevik    schedule 28.11.2017
comment
В help.launchpad.net/Packaging/PPA/BuildingASourcePackage я вижу, что они используют ubuntu3, здесь я вижу ubuntu8 -- что означает ubuntuN? Это не серия, в руководстве по упаковке написано указывать это отдельно.   -  person retorquere    schedule 19.03.2019


Ответы (2)


Число перед : – это эпоха. Это переопределяет версию для целей заказа, например. 3:3.1 считается новее, чем 2:3.2. Он используется, когда упаковщику необходимо понизить версию пакета в репозиториях по одной из различных причин.

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

person Ignacio Vazquez-Abrams    schedule 08.03.2012
comment
Полное описание формата версии Debian можно найти на справочной странице deb-version(5). - person Guillem Jover; 28.08.2016

Руководство по политике Debian

Оба они описаны в: https://www.debian.org/doc/debian-policy/#version, который также воспроизводится в:

man deb-version

В этих руководствах говорится, что полный формат:

[epoch:]upstream_version[-debian_revision]

epoch

В руководстве сказано:

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

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

  • 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? :-)

debian_revision

В руководстве сказано:

Эта часть номера версии указывает версию пакета Debian на основе исходной версии.

Редакция Debian необходима для Debian из-за изменений в сценариях/исправлениях сборки, которые сам пакет Debian использует поверх исходного кода самого программного обеспечения.

-ubuntuY

Ubuntu также может добавить суффикс -ubuntuY для учета изменений, внесенных в пакет Ubuntu по сравнению с пакетом Debian.

Так, например, 4:4.7.4-0ubuntu8 означает, что это 8-я версия пакета Ubuntu, основанная на пакете 4:4.7.4 Debian.

Это связано с тем, что Ubuntu использует Debian в качестве основы, но также может добавлять дополнительные изменения.

0 действует как заполнитель, когда у пакета Debian нет номера, поскольку debian_revision не является обязательным.

Дополнительные сведения см. по адресу: https://serverfault.com/questions/604541/debian-packages-version-convention/708569#708569

person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 17.06.2018