J'utilise la dpkg -l
commande pour savoir quelle 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 renvoie 0.8.3~git.20101118t223039
ce qui est erroné 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 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
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’é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?
la source
dpkg --info package.deb
fonctionne, mais-s
ne l'a pas faitdpkg --info package.deb
fonctionne sur les fichiers de paquets,dpkg -s <packagename>
sur les noms de paquets - aucun fichier requisla source
dpkg-query --showformat='${Package}\t${Version}\n' --show lsb-release coreutils ...
dpkg-query --showformat='${Version}\n' --show python3-lxml
.Il n'utilise pas la
dpkg
commande mais apt-show-versionsExemple:
la source
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:
Ou juste pour le numéro de version:
la source
apt-cache
dépend de la locale actuelle. Par exemple, en Allemagne, vous devez le fairegrep 'Installiert:'
. Pour compenser cela, utilisez toujours les paramètres régionauxC.UTF-8
lors de la création de scripts. SoitLC_ALL=C.UTF-8; export LC_ALL
au début du script, soit au cas par cas, par exemple:LC_ALL=C.UTF-8 apt-cache policy network-manager | grep 'Installed:' | awk '{print $2}'
Une autre méthode pour trouver la version d’un paquet installé via
dpkg
comme ci-dessous,Exemple:
Explication:
dpkg -l
La commande énumère tous les packages installés. Cette sortie standard a été fournie en entrée de laawk
commande.awk
recherche le nom du paquet correspondant dans l'entrée standard ( colonne 2 ) s'il trouve, puis saisit la ligne correspondante. Et finalement, affiche la valeur de ( colonne 3 ) qui représente en fait la version du package.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 la colonne 5 représente la description du package .
la source
dpkg
abord et ensuite laisser awk les filtrer à nouveau? Vous pouvez également demander la liste pour un seul colis:dpkg -l <package-name>