Chaque paquet possède un numéro de version enregistré dans le champ Version de son fichier de contrôle.
Le système de gestion des paquets impose un ordre aux numéros de version : il peut ainsi connaître quel type de mise à niveau est en cours et les applications qui lui servent d'interface peuvent dire si un paquet disponible est plus récent que celui installé sur le système. La partie la plus significative (du moins en ce qui concerne la comparaison) du format des numéros de version se trouve au début.
Le format des numéros de version est le suivant : [epoch:]version_originelle[-debian_revision]
Les trois composants sont :
Il sert à permettre les erreurs dans les numéros des vieilles versions d'un paquet, et aussi à abandonner les précédentes structures de numérotation concernant les versions d'un paquet.
Les méthodes de comparaison du système de gestion des paquets en ce qui concerne la partie version_originelle sont décrites ci-dessous. Cette partie est obligatoire.
La partie version_originelle ne peut contenir que des caractères alphanumériques [16]et les caractères ., +, - et : (point, plus, trait d'union et deux-points) ; elle commencera par un chiffre. S'il n'y a pas de partie révision_debian alors le trait d'union « - » n'est pas autorisé. S'il n'y a pas de partie epoch alors les « : » ne sont pas autorisés.
Cette partie est facultative. Si elle manque, la partie version_originelle ne peut contenir de trait d'union. On utilise cette partie quand un morceau de code a été écrit spécialement pour obtenir un paquet Debian. Il n'y a qu'une seule débianisation de ce paquet et aucune indication de révision n'est nécessaire.
Par convention, la partie révision_debian est remis à 1 à chaque fois que la partie version_originelle est incrémentée.
Le système de gestion de paquet sépare les parties version_originelle et révision_debian au dernier trait d'union de la chaîne. Dans une comparaison, l'absence de la partie révision_debian est détectée plus tôt que sa présence (néanmoins la partie révision_debian est la partie la moins significative du numéro de version).
Le système de gestion des paquets compare les parties version_originelle et révision_debian en utilisant le même algorithme.
Les chaînes sont comparées de gauche à droite.
Pour chaque chaîne, une partie initiale composée uniquement de lettres est déterminée. Ces deux parties (l'une peut être vide) sont comparées lexicalement. Si une différence est trouvée, elle est retournée. La comparaison lexicale est une comparaison qui utilise des valeurs ASCII modifiées de manière à ce que toutes les lettres soient classées avant les chiffres et les caractères de ponctuation.
Ensuite, pour ce qui reste de cette chaîne, une partie initiale composée uniquement de chiffres est déterminée. Les valeurs numériques de ces deux parties sont comparées, la différence est retournée comme résultat de la comparaison. Dans ce but, une chaîne vide (qui peut seulement apparaître à la fin de l'une ou des deux chaînes que l'on compare) compte pour zéro.
Ces deux phases sont répétées (comparaison et suppression des caractères et des chiffres se trouvant au début des chaînes) jusqu'à ce qu'une différence soit trouvée ou que les deux chaînes soient terminées.
Le but de la partie epoch est de permettre des erreurs dans la numérotation de version et de s'arranger avec les situations où la numérotation de version change. Il ne sert pas à corriger les numéros de version contenant des chaînes de caractères que le système de gestion des paquets ne peut pas interpréter (tel que ALPHA ou pre-) ou une numérotation bâtarde (l'auteur de ce manuel a entendu parler d'un paquet dont les versions allaient ainsi : 1.1.1.2, 1.3, 1, 2.1, 2.2, 2 et ainsi de suite).
Quand la numérotation d'un paquet pose problème, elle sera convertie en un format utilisable dans le champ Version.
En règle générale, les paquets Debian utiliseront les mêmes numéros de version que les sources.
Cependant, la numérotation des sources est parfois fondée sur une date (par
exemple, un instantané d'une version de développement) ; le système de gestion
des paquets ne peut pas manipuler cette numérotation sans les epochs.
Et Dpkg
par exemple considère que « 96May01 » est plus
grand que « 96Dec24 ».
Pour éviter l'utilisation d'epochs à chaque nouvelle version source, on emploiera dans de tels cas le format suivant : « 19960501 », « 19961224 ». Le responsable de paquet décidera d'embêter ou non le responsable des sources avec une demande de modification de la numérotation de ses versions.
Il faut noter que d'autres formats fondés sur les dates et qui sont correctement analysés par le système de gestion des paquets ne doivent pas être modifiés.
Les paquets « Debian pure souche » (c.-à-d. écrits spécialement pour debian) dont les numéros de version comprennent des dates utiliseront toujours le format suivant : « AAAAMMJJ ».
La Charte Debian
version 3.5.6.1 cvs 1.68 03/2002ijackson@gnu.ai.mit.edu
schwarz@debian.org
bweaver@debian.org
debian-policy@lists.debian.org