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

70

J'utilise la commande dpkg -l pour savoir quelle version d'un package 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 voir, il renvoie 0.8.3~git.20101118t223039 , ce qui est faux car il tronque la version (j'en ai choisi une 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 COLONNE longuement stupide pour le faire évoluer:

COLUMNS=200 dpkg -l network-manager

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

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'utilisation de l'ubuntu dans les versions et la prolifération des PPA, ces chaînes deviennent de plus en plus longues. Y a-t-il un moyen plus facile?

    
posée Jorge Castro 30.11.2010 - 07:20
la source

5 réponses

72
dpkg -s <packagename> | grep '^Version:'

e. g.:

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

Exemple de sortie:

Version: 0.8.1+git.20100810t184654.ab580f4-0ubuntu2
    
réponse donnée aneeshep 30.11.2010 - 07:27
la source
29
dpkg-query --showformat='${Version}' --show python3-lxml
    
réponse donnée A T 22.12.2015 - 03:16
la source
24

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
    
réponse donnée Isaiah 30.11.2010 - 07:37
la source
14

Je pense que aneeshep est la meilleure réponse car votre question spécifie 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
    
réponse donnée andrewsomething 30.11.2010 - 19:59
la source
4

Une autre méthode pour trouver la version d'un package installé via dpkg comme ci-dessous,

dpkg -l | awk '=="package-name" { print  }'  

Exemple:

$ dpkg -l | awk '=="network-manager" { print  }'
0.9.8.0-0ubuntu22

Explication:

La commande

dpkg -l répertorie tous les packages installés. Cette sortie standard a été utilisée comme entrée de la commande awk . awk recherche le nom du package correspondant dans l'entrée standard ( colonne 2 ). ) si elle trouve alors la ligne correspondante. Et enfin, affiche la valeur de ( column 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 la version du package , la colonne 4 représente l’architecture et 5 représente la description du package .

    
réponse donnée Avinash Raj 30.03.2014 - 10:46
la source

Lire d'autres questions sur les étiquettes