Version
du
fichier de contrôle.
dpkg
impose un ordre sur les numéros de version, afin de savoir
si les paquets sont nouveaux ou anciens et afin que dselect
puisse dire si un des paquets qu'il a trouvé est plus récent que celui
installé sur le système. La partie la plus significative dans le format
de numéro de version se trouve au début.
Le format de numéro de version est:
[epoch:]version-originale[-révision-debian]Les trois composants sont:
Il est fourni pour autoriser des erreurs dans les numéros de version des vieilles versions de paquet, et aussi pour abandonner une structure précédente de numérotation de version de paquet.
dpkg
n'affiche pas habituellement le champ epoch, à
moins qu'il ne soit essentiel (différent de 0, ou si le champ
version-originale contient la ponctuation :), dselect
n'affiche pas le champ epoch du tout dans la partie principale
d'un affichage de sélection de paquet.
.deb
a été crée, si c'est possible. Généralement, ce champ est dans le même
format que celui spécifié par l'auteur original, cependant, il peut être si
nécessaire, reformaté pour rentrer dans le format dpkg
et la
structure de comparaison.
Le comportement de la comparaison de dpkg
en respect avec le
champ version-originale est décrit ci-dessous. La portion du
champ version-originale du numéro de version est
obligatoire.
Le champ version-originale ne peut contenir seulement des
caractères alphanumériques et les caractères + . - :
et doit
commencer par un chiffre. S'il n'y a pas de champ révision-debian
alors le tiret (-) n'est pas autorisé. S'il n'y a pas le
champ epoch alors les : ne sont pas autorisés.
dpkg
la
compare de la même façon.Ce champ est optionnel. S'il n'est pas présent alors le champ version-originale ne peut contenir de tirer (-). Ce format représente le cas où un morceau de code a été écrit spécialement pour obtenir le paquet binaire Debian. S'il n'y a qu'une seule et plus débianisation du paquet, aucune indication de révision n'est nécessaire.
Par convention, le champ révision-debian est remis à 1 à chaque fois que le champ version-originale est incrémenté.
dpkg
coupera en deux, les champs version-originale et
révision-debian au dernier tiret dans le numéro de version.
L'absence du champ révision-debian est comparée plus tôt que la
présence de ce champ (mais le champ révision-debian est la partie la
moins significative du numéro de version).
Le champ révision-debian peut contenir seulement des caractères
alphanumériques et les caractères (+ .
).
dpkg
en utilisant le même algorithme.Les chaînes sont comparées de gauche à droite.
D'abord la partie initiale de chaque chaîne, qui consiste entièrement de caractères sans chiffre, est déterminée. Ces deux parties sont comparées lexicalement. Si une différence est trouvée, elle est retournée. La comparaison lexicale est une comparaison de valeurs ASCII modifiées afin que toutes les lettres soient triées plus tôt que les chiffres et caractères de ponctuation.
Ensuite, la partie initiale du reste de chaque chaîne qui consiste entièrement de chiffre est déterminée. La valeur numérique de ces deux parties est comparée, la différence est retournée comme résultat de la comparaison. C'est dans ce but, qu'une chaîne vide (qui apparaît seulement à la fin de l'une ou des deux chaînes comparées de version) compte pour un zéro.
Ces deux phases sont répétées (en enlevant du début de la chaîne les caractères et les chiffres) jusqu'à ce qu'une différence soit trouvée ou que les deux chaînes soient terminées.
Le but du champ epoch est d'inhiber les erreurs de
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 dpkg
ne peut pas interpréter (tel que ALPHA
ou pre-
) ou une
numérotation bâtarde (l'auteur du manuel original a entendu qu'un paquet
avait une version 1.1.1.2
, 1.3
, 1
,
2.1
, 2.2
, 2
et ainsi de suite).
Si un paquet original a un problème de numérotation de version, il doit
être converti dans un format sain pour être utilisé dans le champ
Version
.
Si tu as besoin de comparer les numéros de version dans un script, tu peux utiliser dpkg --compare-versions .... Voir dpkg --help pour avoir plus de détails sur les arguments.