3 votes

Comment obtenir l'état installé/non installé de **tous** les packages ?

J'ai trouvé un nombre incalculable de références pour obtenir une liste des paquets installés, mais comment puis-je imprimer une seule liste de tous les paquets connus avec leur "état du paquet" (non installé, installé, à moitié installé etc. tel que défini par dpkg) dans un shell, idéalement comme ceci :

awk   non installé
bash  installé
cc    à moitié installé
[...]

dpkg --get-selections et dpkg --list ne listent que les paquets installés.

dpkg --get-selections '.' ne fonctionne pas.

apt-cache dump ne mentionne pas si les paquets sont installés, et imprime également beaucoup de choses non pertinentes.

J'utilise Travis CI, qui fonctionne sous Ubuntu 12.04 LTS Server Edition 64 bits avec par exemple dpkg-query 1.16.1.2.

1voto

ieplugin Points 216

Vous voulez dpkg-query;

Pour dpkg-query >= 1.17.11:

dpkg-query -f '${Package}\t${db:Status-Status}\n' -W '*'

Pour dpkg-query < 1.17.11:

dpkg-query -f '${Package} ${Status}\n' -W '*' | awk '{print $1"\t"$4}'

#1:

  • -f '${Package}\t${db:Status-Status}\n': Lorsqu'il est utilisé avec l'option -W, spécifie le format de la sortie (voir man dpkg-query pour d'autres options);
  • -W '*': liste tous les paquets correspondant au motif *;

#2:

  • -f '${Package} ${Status}\n': Lorsqu'il est utilisé avec l'option -W, spécifie le format de la sortie (voir man dpkg-query pour d'autres options);
  • -W '*': liste tous les paquets correspondant au motif *;
  • awk '{print $1"\t"$4}': imprime uniquement le premier et le quatrième champ;

Dans ce cas, il semble que vous voulez lister le mot de statut, donc j'ai choisi le champ virtuel db:Status-Status; voici les autres champs virtuels liés au statut du package:

              db:Status-Abbrev
                     Il contient l'abréviation du statut du paquet, comme "ii"
                     (depuis dpkg 1.16.2).

              db:Status-Want
                     Il contient le statut de désir du paquet, partie du champ Statut
                     (depuis dpkg 1.17.11).

              db:Status-Status
                     Il contient le mot de statut du paquet, partie du champ Statut
                     (depuis dpkg 1.17.11).

              db:Status-Eflag
                     Il contient le drapeau d'erreur du statut du paquet, partie du
                     champ Statut (depuis dpkg 1.17.11).

user@user-X550CL ~/tmp % dpkg-query -f '${Package}\t${db:status-status}\n' -W '*' | head
aalib1  not-installed
account-plugin-aim  installed
account-plugin-empathy  not-installed
account-plugin-facebook installed
account-plugin-flickr   installed
account-plugin-foursquare   not-installed
account-plugin-gadugadu not-installed
account-plugin-generic-oauth    not-installed
account-plugin-google   installed
account-plugin-groupwise    not-installed

0voto

infoclogged Points 511
dpkg-query -l '*'

vous montrera tous les packages installés, non installés et partiellement installés. Il suffit de faire un grep sur le package que vous voulez filtrer.

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