Назад | Перейти на главную страницу

соглашение о версиях пакетов debian

Я использую 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. Как работает «сравнение версий», когда форматы версий могут быть такими разными?

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

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

В Руководство по политике 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 всегда должен быть идентичен исходному исходному тексту, и поэтому указание версии не требуется.

Обычно перезапускают debian_revision в 1 каждый раз upstream_version увеличена.

Система управления пакетами разделит номер версии на последний дефис в строке (если он есть), чтобы определить 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.

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