J'utilise la commande dpkg -l
pour connaître la version d'un paquet que j'ai installé. Par exemple:
dpkg -l network-manager
renvoie les informations sur le package:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-=========================-=========================-==================================================================
ii network-manager 0.8.3~git.20101118t223039 network management framework daemon
Comme vous pouvez le constater, il retourne 0.8.3~git.20101118t223039
, ce qui est faux car il tronque la version (j'ai choisi une version longue pour les besoins de cette question). La façon dont j'ai résolu ce problème dans le passé est de passer un argument stupidement long de COLUMNS pour le développer:
COLUMNS=200 dpkg -l network-manager
ce qui me donne le numéro de version complet, mais aussi un tas de bric-à-brac:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Description
+++-============================================-============================================-========================================================================================================
ii network-manager 0.8.3~git.20101118t223039.d60a988-0ubuntu1 network management framework daemon
Je peux maintenant voir le numéro de version complet, qui est 0.8.3~git.20101118t223039.d60a988-0ubuntu1
.
J'ai l'impression que ce n'est pas la bonne façon de trouver le numéro de version d'un paquet installé. Cela n’était jamais vraiment un problème dans le passé, mais avec l’ajout de "ubuntu" dans les versions et la multiplication des PPA, ces chaînes deviennent de plus en plus longues. Y a-t-il un moyen plus facile?
dpkg -s <packagename> | grep '^Version:'
e. g.:
dpkg -s network-manager | grep '^Version:'
Exemple de sortie:
Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
dpkg-query --showformat='${Version}' --show python3-lxml
Il n'utilise pas la commande dpkg
mais apt-show-versions
Exemple:
$ apt-show-versions network-manager
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Je pense que aneeshep est la meilleure réponse car votre question précise l'utilisation de dpkg. Mais pour être complet, voici une autre façon:
apt-cache policy network-manager
network-manager:
Installed: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Candidate: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Version table:
*** 0.8.1+git.20100810t184654.ab580f4-0ubuntu2 0
500 http://us.archive.ubuntu.com/ubuntu/ maverick/main i386 Packages
100 /var/lib/dpkg/status
Ou juste pour le numéro de version:
apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2
Une autre méthode pour trouver la version d'un paquet installé via dpkg
comme ci-dessous,
dpkg -l | awk '$2=="package-name" { print $3 }'
Exemple:
$ dpkg -l | awk '$2=="network-manager" { print $3 }'
0.9.8.0-0ubuntu22
Explication:
La commande dpkg -l
répertorie tous les packages installés. Cette sortie standard a été fournie en entrée à la commande awk
.awk
recherche le nom du package correspondant dans l'entrée standard (, colonne 2 ) s'il trouve, il saisit la ligne correspondante. Et finalement, affiche la valeur de ( colonne 3 ) qui représente en fait la version du package.
$ dpkg -l
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
Selon ce qui précède, la colonne 2 représente le nom du package, la colonne 3 représente le version du package, la colonne 4 représente le architecture et la colonne 5 représente - description du paquet.