Конвенція про версії пакетів 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. Як працює "порівняння версій", коли формати версій можуть бути настільки різними?

Хто-небудь може мені пояснити це? Або де я можу знайти офіційний документ?

Заздалегідь спасибі.


Що ви маєте на увазі під назвою: "Чому в них є ubuntu, а їх немає?"
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

1
@ CiroSantilli709 大 抓捕 六四 事件 法轮功, тобто чому деякі номери версій мають суфікс, що містить слово, ubuntuа деякі ні.
rakslice

Відповіді:


50

У Посібнику з політик Debian сказано про поле версії, яке відповідає на деякі частини вашого запитання:

Формат

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

Три компоненти тут:

епоха

Це єдине (як правило, невелике) безпідписане ціле число. Він може бути пропущений, і в цьому випадку передбачається нуль. Якщо він пропущений, то upstream_version може не містити жодних колонок. Він передбачений для того, щоб допускати помилки в номерах версій старих версій пакета, а також попередніх схемах нумерації версій пакету.

upstream_version

Це основна частина номера версії. Зазвичай це номер версії оригінального ("upstream") пакету, з якого зроблений файл .deb, якщо це застосовно. Зазвичай це буде в тому самому форматі, що і вказане авторами вище за течією; однак, можливо, його потрібно буде переформатувати, щоб відповідати формату та схемі порівняння системи управління пакетами.

Поведінка порівняння системи управління пакунками щодо upstream_version описана нижче. Upstream_version частина номера версії є обов'язковою.

Upstream_version може містити тільки алфавітно - цифрові [36] і символи "."(повна зупинка), "+"(плюс), "-"(дефіс), ":"(двокрапка), "~"(тильда) і повинен починатися з цифри. Якщо немає debian_revision, дефіси заборонені; якщо епохи немає, то колонки не допускаються.

debian_revision

Ця частина номера версії вказує версію пакету Debian, засновану на версії upstream. Він може містити лише буквено-цифрові символи та символи "."(повна зупинка), "+"(плюс), "~"(тильда) і порівнюється так само, як і вгору_перехід .

Це необов’язково; якщо його немає, то upstream_version може не містити дефісу. Цей формат являє собою випадок, коли частина програмного забезпечення була написана спеціально для пакету Debian, де джерело пакунків Debian завжди має бути ідентичним первозданному джерелу, і тому не потрібно вказувати перегляд.

Умовно перезапускати debian_revision о 1 щоразу, коли посилюється версія upstream_version .

Система управління пакетами розбиває номер версії на останньому дефісі в рядку (якщо такий є), щоб визначити upstream_version та debian_revision . Відсутність debian_revision еквівалентна debian_revision 0.

Порівняння

При порівнянні двох номерів версій спочатку порівнюється епоха кожної, потім висхідна_версія, якщо епоха дорівнює, а потім debian_revision, якщо upstream_version також дорівнює. епоха порівнюється чисельно. У upstream_version і debian_revision частини порівнюються системи управління пакетами , використовуючи наступний алгоритм:

Рядки порівнюються зліва направо.

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

Потім визначається початкова частина залишку кожного рядка, що складається повністю з цифр. Числові значення цих двох частин порівнюються, і будь-яка знайдена різниця повертається в результаті порівняння. Для цих цілей порожній рядок (який може відбуватися лише в кінці однієї або обох рядків версії, що порівнюються) вважається нулем.

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

Зауважимо, що мета епох полягає в тому, щоб ми могли залишити після себе помилки в нумерації версій і впоратися з ситуаціями, коли змінюється схема нумерації версій. Він не покликаний впоратися з номерами версій, що містять рядки літер, які система управління пакунками не може інтерпретувати (наприклад, ALPHAабо pre-), або з дурними замовленнями.

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


1
Дякую, це дуже допомагає. Але як працює порівняння версій? цифри, букви та ~ +, який приходить першим, а останній?
cizixs

Я розширив цитату у своїй відповіді, щоб включити розділ посібника, який описує поведінку порівняння.
Flup

2
Чи є десь онлайн-інструмент, де я можу перевірити, як ці рядки версій сортуються?
Нік

Не могли б ви вставити ті самі приклади? Наприклад, розбір деяких версій вище в окремих частинах. Якщо і верхня версія, і версія debian можуть містити - і + як ми можемо знати, де поділ? Також перша ланка, здається, порушена.
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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.