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


Je utilise l dpkg -l commande pour savoir quelle version d'un paquet 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 revient 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 COLOMNS bêtement long pour le faire évoluer:

COLUMNS=200 dpkg -l network-manager

ce 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?


70
2017-11-30 06:20


origine




Réponses:


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

e. g.:

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

Sortie de l'échantillon:

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

73
2017-11-30 06:27



dpkg --info package.deb fonctionne bien -s n'a pas - Twisted Pear
@Twisted Pear - dpkg --info package.deb fonctionne sur les fichiers de paquets, dpkg -s <packagename> fonctionne sur les noms de paquets - aucun fichier requis - lane


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

29
2017-12-22 02:16



Lorsque j'interroge plusieurs packages, je suggère: dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ... - ThorSummoner
J'aime cette version, car elle est précise (pas besoin de grep ou de couper). - guettli


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

24
2017-11-30 06:37





Je pense que aneeshep est la meilleure réponse que votre question spécifie en utilisant 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 juste pour le numéro de version:

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

14
2017-11-30 18:59



La sortie de apt-cache dépend de la locale actuelle. Par exemple en Allemagne, vous devez grep 'Installiert:'. Pour compenser cela, utilisez toujours Locale C.UTF-8 en script. Soit avec LC_ALL=C.UTF-8; export LC_ALL au début du script ou, au cas par cas, quelque chose comme: LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}' - Tino


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 commande liste tous les paquets installés. Cette sortie standard a été alimentée en entrée du awk commander.awk recherche le nom du package correspondant dans l'entrée standard (colonne 2) si elle trouve alors la ligne correspondante. Et enfin, imprime la valeur de (colonne 3) qui était 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 paquet, la colonne 3 représente le version du package, la colonne 4 représente le architecture et la colonne 5 représente description du forfait.


4
2018-03-30 08:46



Pourquoi avez-vous besoin de lister tout paquets utilisant dpkg d'abord, puis laissez awk les filtrer à nouveau? Vous pouvez également demander la liste pour un seul package: dpkg -l <package-name> - gertvdijk