103 votes

Comment puis-je trouver le numéro de version d'un paquet installé via dpkg ?

J'utilise le 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 paquet :

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 voir, il renvoie 0.8.3~git.20101118t223039 ce qui est faux car cela 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 COLUMNS stupidement long pour le faire s'étendre :

COLUMNS=200 dpkg -l network-manager

ce qui me donne le numéro de version complet, mais aussi un tas d'ordures :

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

Maintenant je peux 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'a jamais vraiment été un problème dans le passé, mais avec l'ajout de "ubuntu" dans les versions et la prolifération des PPAs, ces chaînes deviennent de plus en plus longues. Existe-t-il un moyen plus simple ?

95voto

Thomas Points 715
dpkg -s <packagename> | grep '^Version:'

par exemple :

dpkg -s network-manager | grep '^Version:'

Exemple de sortie :

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2

57voto

Sahil Points 51
dpkg-query --showformat='${Version}' --show python3-lxml

26voto

Craig Smitham Points 522

Il n'utilise pas le dpkg commande mais apt-show-versions Install banshee

Exemple :

$ apt-show-versions network-manager  
network-manager/maverick uptodate 0.8.1+git.20100810t184654.ab580f4-0ubuntu2

15voto

Ghirai Points 11

Je pense que la réponse d'aneeshep est la meilleure puisque votre question spécifie l'utilisation de dpkg. Mais pour être complet, voici un autre moyen :

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 pour le seul numéro de version :

apt-cache policy network-manager | grep 'Installed:' | cut -c 14-
0.8.1+git.20100810t184654.ab580f4-0ubuntu2

7voto

Avinash Raj Points 72686

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 :

dpkg -l liste tous les paquets installés. Cette sortie standard a été utilisée comme entrée pour la commande awk comando. awk recherche le nom du paquet correspondant dans l'entrée standard( colonne 2 ) s'il le trouve, il saisit la ligne correspondante. Et enfin, il imprime la valeur de ( colonne 3 ) qui représentait en fait la version du paquet.

$ 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

D'après ce qui précède, la colonne 2 représente le nom du paquet la colonne 3 représente le version du paquet la colonne 4 représente le architecture et la colonne 5 représente description du paquet .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X