Соглашение о версии пакетов Debian

35

Я использую Debian / Ubuntu, и запутался в версиях пакетов. При использовании dpkg -lкоманды я получаю:

ii  vim                                 2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor
ii  vim-common                          2:7.3.429-2ubuntu2.1                Vi IMproved - Common files
ii  vim-runtime                         2:7.3.429-2ubuntu2.1                Vi IMproved - Runtime files
ii  vim-tiny                            2:7.3.429-2ubuntu2.1                Vi IMproved - enhanced vi editor - compact version
ii  virt-what                           1.11-1                              detect if we are running in a virtual machine
ii  w3m                                 0.5.3-5ubuntu1                      WWW browsable pager with excellent tables/frames support
ii  watershed                           6                                   reduce superfluous executions of idempotent command
ii  wget                                1.13.4-2ubuntu1                     retrieves files from the web
ii  whiptail                            0.52.11-2ubuntu10                   Displays user-friendly dialog boxes from shell scripts
ii  whoopsie                            0.1.33                              Ubuntu crash database submission daemon
ii  wimlib9                             1.5.0-1~webupd8~precise             Library to extract, create, modify, and mount WIM files
ii  wimtools                            1.5.0-1~webupd8~precise             Tools to extract, create, modify, and mount WIM files
ii  wireless-tools                      30~pre9-5ubuntu2                    Tools for manipulating Linux Wireless Extensions
ii  wpasupplicant                       0.7.3-6ubuntu2.1                    client support for WPA and WPA2 (IEEE 802.11i)
ii  x11-common                          1:7.6+12ubuntu2                     X Window System (X.Org) infrastructure
ii  x11-utils                           7.6+4ubuntu0.1                      X11 utilities
ii  xauth                               1:1.0.6-1                           X authentication utility
ii  xbitmaps                            1.1.1-1                             Base X bitmaps
ii  xclip                               0.12-1                              command line interface to X selections
ii  xfonts-encodings                    1:1.0.4-1ubuntu1                    Encodings for X.Org fonts
ii  xfonts-utils                        1:7.6+1                             X Window System font utility programs
ii  xkb-data                            2.5-1ubuntu1.3                      X Keyboard Extension (XKB) configuration data
ii  xml-core                            0.13                                XML infrastructure and XML catalog file support
rc  xpdf                                3.02-21build1                       Portable Document Format (PDF) reader
ii  xterm                               271-1ubuntu2.1                      X terminal emulator
ii  xz-lzma                             5.1.1alpha+20110809-3               XZ-format compression utilities - compatibility commands
ii  xz-utils                            5.1.1alpha+20110809-3               XZ-format compression utilities
ii  zabbix-agent                        1:1.8.11-1                          network monitoring solution - agent
ii  zlib1g                              1:1.2.3.4.dfsg-3ubuntu4             compression library - runtime
ii  zlib1g-dev                          1:1.2.3.4.dfsg-3ubuntu4             compression library - development
ii  zsh                                 4.3.17-1ubuntu1                     shell with lots of features

Третий столбец есть version, но все это «запутано» так, как я не могу понять. Я имею в виду, что разные пакеты используют совершенно разные спецификации именования.

Вот основные вопросы:

  1. Почему в некоторых номерах есть номера ubuntu, а в некоторых нет?
  2. Что -~+означают все специальные знаки препинания ?
  3. Что alpha, buildи dfsg? Могу ли я просто использовать их случайно?
  4. vimи другие пакеты есть 2:. Что это значит?
  5. Как работает «сравнение версий», когда форматы версий могут быть такими разными?

Может кто-нибудь, пожалуйста, объясните мне это? Или где я могу найти официальный документ?

Заранее спасибо.

cizixs
источник
Что вы имеете в виду: «Почему в них есть Ubuntu, а их нет?»
Сиро Сантилли 新疆 改造 中心 法轮功 六四 事件
1
@ CiroSantilli709, т. Е. Почему некоторые номера версий имеют суффикс, содержащий слово, ubuntuа некоторые нет.
Ракслице

Ответы:

50

В Руководстве по политике Debian сказано следующее о поле версии, которое отвечает на некоторые части вашего вопроса:

Формат

Формат такой: [epoch:]upstream_version[-debian_revision]

Три компонента здесь:

эпоха

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

upstream_version

Это основная часть номера версии. Обычно это номер версии исходного («восходящего») пакета, из которого был создан файл .deb, если это применимо. Обычно это будет тот же формат, который указан указанным автором (ами); однако может потребоваться переформатирование для соответствия формату и схеме сравнения системы управления пакетами.

Поведение сравнения системы управления пакетами относительно upstream_version описано ниже. Часть upstream_version номера версии является обязательной.

Версия upstream_version может содержать только буквенно-цифровые символы [36] и символы "."(точка остановки), "+"(плюс), "-"(дефис), ":"(двоеточие), "~"(тильда) и должна начинаться с цифры. Если нет debian_revision, то дефисы не допускаются; если нет эпохи, то двоеточия не допускаются.

debian_revision

Эта часть номера версии указывает версию пакета Debian, основанную на вышестоящей версии. Он может содержать только буквенно-цифровые символы и символы "."(полная остановка), "+"(плюс), "~"(тильда) и сравнивается так же, как и upstream_version .

Это необязательно; если он отсутствует, то upstream_version может не содержать дефис. Этот формат представляет собой случай, когда часть программного обеспечения была написана специально для пакета Debian, где источник пакета Debian всегда должен быть идентичен первоисточнику, и поэтому указание редакции не требуется.

При каждом увеличении upstream_version принято перезапускать debian_revision со значением 1 .

Система управления пакетами разбивает номер версии на последний дефис в строке (если он есть), чтобы определить upstream_version и debian_revision . Отсутствие debian_revision эквивалентно debian_revision 0.

сравнение

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

Строки сравниваются слева направо.

Сначала определяется начальная часть каждой строки, состоящая полностью из нецифровых символов. Эти две части (одна из которых может быть пустой) сравниваются лексически. Если разница найдена, она возвращается. Лексическое сравнение - это сравнение значений ASCII, измененных так, чтобы все буквы сортировались раньше, чем все не-буквы, и чтобы тильда сортировалась раньше всего, даже в конце части. Например, следующие части в отсортированном порядке от раннего до последнего: ~~, ~~a, ~, пустая часть, a.

Затем определяется начальная часть оставшейся части каждой строки, которая полностью состоит из цифр. Числовые значения этих двух частей сравниваются, и любая найденная разница возвращается в результате сравнения. Для этих целей пустая строка (которая может встречаться только в конце одной или обеих сравниваемых версий) считается за ноль.

Эти два шага (сравнение и удаление начальных нецифровых строк и начальных цифр) повторяются до тех пор, пока не будет найдена разница или не исчерпаны обе строки.

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

ubuntuбудет указывать, что пакет был собран специально для Ubuntu. Эти alphaи buildстроки , кажется, не имеют никакого особого значение, но dfsgотносятся к пакету , который был модифицированным для соответствия Debian по определению Свободного ПО .

Flup
источник
1
Спасибо, это очень помогает. Но как работает сравнение версий? цифры, буквы и ~ +, что идет первым, а что последним?
Cizixs
Я расширил цитату в своем ответе, включив в нее раздел руководства, в котором описано поведение сравнения.
Флюп
2
Есть ли где-нибудь онлайн-инструмент, где я могу проверить, как сортируются эти строки версий?
Ник
Не могли бы вы вставить те же примеры? Например, парсинг некоторых из версий выше в отдельные части. Если обе версии могут содержать - и + как мы узнаем, где находится разделение? Кроме того, первая ссылка, кажется, не работает.
fersarr
@fersarr Я оставлю примеры другим, но я исправил ссылку.
Flup
10

XubuntuY часть версии, например, 1ubuntu1

  • Xверсия пакета Debian Большинство пакетов Ubuntu основаны на пакетах Debian, который является «восходящим» дистрибутивом.

    Если 0это означает, что пакет Debian отсутствует: он существует только в Ubuntu.

    X сбрасывается при обновлении реальной версии апстрима, например, с Binutils 2.25 до Binutils 2.26.

    Версии Debian существуют, потому что Debian может вносить исправления в пакеты, так что это будет лучше работать в системе Debian или для выпусков безопасности.

    Разработчики Debian, конечно же, заинтересованы в объединении патчей, чтобы избежать разветвления.

    Каждый раз, когда производится новый набор патчей, это число увеличивается.

  • ubuntuY необязательно.

    Если он отсутствует, это означает, что пакет Debian использовался напрямую.

    В противном случае это означает, что это патч Yth Ubuntu, примененный поверх патча Debian, так же, как Debian применяется поверх реального апстрима.

    Yсбрасывается при Xувеличении.

Если вы получаете источник пакета с:

apt-get source gdb

вы увидите патчи, примененные Ubuntu и Debian по адресу:

debian/patches/

Еще интереснее то, что вы можете клонировать bzrи увидеть список всех версий Ubuntu с тем, что изменилось между ними:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Смотрите также: https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

Что на самом деле представляет эпоха

https://askubuntu.com/questions/441879/why-do-some-packages-have-extra-numbers-on-the-front-of-their-version-string

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
источник