web-dev-qa-db-fra.com

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

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?

80
Jorge Castro
dpkg -s <packagename> | grep '^Version:'

e. g.:

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

Exemple de sortie:

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
81
aneeshep
dpkg-query --showformat='${Version}' --show python3-lxml
35
A T

Il n'utilise pas la commande dpkg mais apt-show-versionsInstall banshee

Exemple:

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

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
15
andrewsomething

Une autre méthode pour trouver la version d'un paquet installé via dpkgcomme 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.awkrecherche 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.

5
Avinash Raj