convention de version des paquets debian

35

J'utilise debian / Ubuntu et je suis confus au sujet des versions de paquets. En utilisant la dpkg -lcommande, je reçois:

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

La troisième colonne est version, mais tout est "foiré" d'une manière que je ne peux pas comprendre. Je veux dire, différents paquets utilisent des spécifications de nommage totalement différentes.

Voici les principales questions:

  1. Pourquoi y a-t-il des numéros de version ubuntuet d'autres pas?
  2. Que signifie toute ponctuation spéciale -~+?
  3. Quels sont alpha, buildet dfsg? Puis-je les utiliser avec désinvolture?
  4. vimet d'autres forfaits ont 2:. Qu'est-ce que ça veut dire?
  5. Comment fonctionne la "comparaison de version", alors que les formats de version peuvent être si différents?

Quelqu'un peut-il m'expliquer s'il vous plaît? Ou où puis-je trouver un document officiel?

Merci d'avance.

Cizix
la source
Que voulez-vous dire par: "Pourquoi y a-t-il ubuntu en eux et pas?"
Ciro Santilli a annoncé le
1
@ CiroSantilli709 大 抓捕 六四 法轮功 C'est-à-dire pourquoi certains numéros de version ont un suffixe contenant le mot ubuntuet d'autres pas.
Rakslice

Réponses:

50

La Debian Policy Manual a ceci à dire à propos du champ de version, qui répond à certaines parties de votre question:

Format

Le format est: [epoch:]upstream_version[-debian_revision]

Les trois composants ici sont:

époque

C'est un simple (généralement petit) nombre entier non signé. Il peut être omis, auquel cas zéro est supposé. S'il est omis, la version en amont ne peut contenir aucun signe deux-points. Il est fourni pour permettre d'erreurs dans les numéros de version d'anciennes versions d'un paquet, ainsi que les schémas de numérotation des versions précédentes d'un paquet.

version_amont

C'est la partie principale du numéro de version. Il s'agit généralement du numéro de version du package d'origine ("en amont") à partir duquel le fichier .deb a été créé, le cas échéant. Ce sera généralement dans le même format que celui spécifié par le (s) auteur (s) en amont; Cependant, il peut être nécessaire de le reformater pour l'adapter au format et au schéma de comparaison du système de gestion des paquets.

Le comportement de comparaison du système de gestion de paquets par rapport à la version en amont est décrit ci-dessous. La partie upstream_version du numéro de version est obligatoire.

La version en amont ne peut contenir que des caractères alphanumériques [36] et les caractères "."(point final), "+"(plus), "-"(trait d'union), ":"(deux points), "~"(tilde) et doit commencer par un chiffre. S'il n'y a pas debian_revision, les traits d'union ne sont pas autorisés; s'il n'y a pas d' époque, les deux points ne sont pas autorisés.

debian_revision

Cette partie du numéro de version spécifie la version du paquet Debian basée sur la version en amont. Il peut contenir uniquement des caractères alphanumériques et les caractères "."(point final), "+"(plus), "~"(tilde) et est comparé de la même manière que la version en amont .

C'est optionnel. s'il n'est pas présent, la version en amont peut ne pas contenir de trait d'union. Ce format représente le cas où un logiciel a été écrit spécifiquement pour être un paquet Debian, où la source du paquet Debian doit toujours être identique à la source vierge et, par conséquent, aucune indication de révision n’est requise.

Il est classique de redémarrer debian_revision à 1 chaque fois que la version en amont est augmentée.

Le système de gestion des paquets séparera le numéro de version du dernier trait d'union de la chaîne (s'il en existe un) pour déterminer la version en amont et la version debian_revision . L'absence de debian_revision équivaut à une debian_revision égale à 0.

Comparaison

Lors de la comparaison de deux numéros de version, on compare d'abord l'époque de chacun, puis la version en amont si la période est identique, puis la version debian_revision si la version en amont est également égale. l'époque est comparée numériquement. Les parties upstream_version et debian_revision sont comparées par le système de gestion des paquets à l'aide de l'algorithme suivant:

Les cordes sont comparées de gauche à droite.

Tout d'abord, la partie initiale de chaque chaîne composée entièrement de caractères non numériques est déterminée. Ces deux parties (dont l'une peut être vide) sont comparées lexicalement. Si une différence est trouvée, elle est renvoyée. La comparaison lexicale est une comparaison des valeurs ASCII modifiées pour que toutes les lettres soient triées avant toutes les non-lettres et qu'un tilde soit trié avant tout, même la fin d'une partie. Par exemple, les pièces suivantes sont triées de l' ordre ancien au plus récent: ~~, ~~a, ~, la partie vide, a.

Ensuite, la partie initiale du reste de chaque chaîne, constituée entièrement de caractères numériques, est déterminée. Les valeurs numériques de ces deux parties sont comparées et toute différence trouvée est renvoyée à la suite de la comparaison. À ces fins, une chaîne vide (qui ne peut apparaître qu'à la fin d'une ou des deux chaînes de version comparées) compte pour zéro.

Ces deux étapes (comparaison et suppression des chaînes initiales non numériques et des chaînes numériques initiales) sont répétées jusqu'à ce qu'une différence soit trouvée ou que les deux chaînes soient épuisées.

Notez que le but des époques est de nous permettre de laisser des erreurs dans la numérotation des versions et de faire face aux situations dans lesquelles le schéma de numérotation des versions change. Il n'est pas conçu pour traiter les numéros de version contenant des chaînes de lettres que le système de gestion de paquets ne peut pas interpréter (telle que ALPHAou pre-), ni les commandes stupides.

ubuntuindiquera que le paquet a été construit spécifiquement pour Ubuntu. Les chaînes alphaet buildne semblent pas avoir de signification particulière, mais font dfsgréférence à un paquet qui a été modifié pour le rendre conforme aux directives du logiciel libre Debian .

Flup
la source
1
Merci, cela aide beaucoup. Mais comment fonctionne la comparaison de version? chiffres, lettres et ~ +, qui vient en premier et qui dernier?
Cizixs
Dans ma réponse, j'ai développé la citation pour inclure la section du manuel décrivant le comportement de la comparaison.
Flup
2
Existe-t-il un outil en ligne quelque part où je peux tester le tri de ces chaînes de version?
Nick
Pourriez-vous s'il vous plaît coller les mêmes exemples? Par exemple, analyser certaines des versions ci-dessus dans des parties distinctes. Si la version en amont et la version debian peuvent contenir - et + comment savons-nous où se trouve la séparation? En outre, le premier lien semble être brisé.
Fersarr
@fersarr je vais laisser des exemples à d'autres mais j'ai corrigé le lien.
Flup
10

XubuntuY une partie de la version par exemple 1ubuntu1

  • Xest la version du paquet Debian. La plupart des paquets Ubuntu sont basés sur des paquets Debian, qui est une distribution "en amont".

    Si 0, cela signifie qu'il n'y a pas de paquet Debian: il n'existe que sous Ubuntu.

    X réinitialise lorsque la version réelle en amont est mise à jour, par exemple Binutils 2.25 à Binutils 2.26.

    Les versions de Debian existent parce que Debian peut effectuer des corrections dans les paquets afin que cela fonctionne mieux dans le système Debian ou pour les mises à jour de sécurité.

    Les développeurs Debian tiennent bien sûr à la fusion des correctifs afin d’éviter toute falsification.

    Chaque fois qu'un nouveau groupe de correctifs est créé, ce nombre augmente.

  • ubuntuY est facultatif.

    S'il n'est pas présent, cela signifie que le paquet Debian a été utilisé directement.

    Autrement, cela signifie qu'il s'agit du Yth Ubuntu appliqué au dessus d'un patch Debian, un peu comme Debian s'applique au dessus de l'amont réel.

    Yréinitialise quand Xaugmente.

Si vous obtenez la source d'un paquet avec:

apt-get source gdb

vous verrez les correctifs appliqués par Ubuntu et Debian sur:

debian/patches/

Encore plus intéressant, vous pouvez cloner bzret voir une liste de toutes les versions d’Ubuntu avec ce qui a changé entre elles:

bzr branch ubuntu:gdb
cd gdb
bzr log | less

Voir aussi: https://askubuntu.com/questions/620533/what-is-the-meaning-of-the-xubuntuy-string-in-ubuntu-package-names

Ce que l'époque représente réellement

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

Ciro Santilli 改造 中心 六四 事件
la source