dpkg est, comme tous le savent, un formidable outil de gestion des paquets sous les distributions GNU/Linux bien connues Debian, Ubuntu mais également d’autres, qui d’ailleurs sont basées souvent sur l’une des deux.

On discutait hier avec l’ami Carmelo des statuts des paquets que nous donne la commande dpkg -l ou dpkg --list. J’en connaissais 2 ou 3 mais je me suis rendu compte que je ne m'étais jamais intéressés aux autres, donc j’ai creusé un peu les manpages et je partage le résultat de mes recherches ici.

Un paquet listé par dpkg -l est défini par deux composantes qui sont les deux lettres sur les deux premières colonnes de la sortie de la commannde.

La première indique l'état de sélection du paquet :

  • u pour unknown : l'état du paquet est inconnu. Un paquet qui est aussi dans un état not-installed et avec un drapeau ok sera oublié dans le prochain enregistrement de la base de données.
  • i pour install : le paquet est marqué pour installation (mais n’est pas forcément installé).
  • r pour remove : le paquet est marqué pour désinstallation (mais n’est pas forcément désinstallé).
  • p pour purge : vous avez saisi le concept, il est marqué pour être purgé mais ne l’est pas encore forcément.
  • h pour hold : dpkg laisse de côté un paquet marqué hold, à moins qu’il ne soit lancé avec l’option de forçage –force-hold.

La deuxième indique l'état du paquet :

  • n pour not-installed : le paquet n’est pas installé sur le système.
  • i pour installed : le paquet est correctement dépaqueté et configuré.
  • c pour config-files : le paquet n’est plus (ou n’a jamais été) présent mais les fichiers de configuration du paquet existent sur le système.
  • U pour unpacked : le paquet est dépaqueté mais n’est pas configuré.
  • F pour half-configured : l’installation du paquet a commencé mais sa configuration est tombée en erreur.
  • h pour half-installed : l’installation du paquet a commencé mais est tombée en erreur.
  • W pour triggers-awaited : le paquet attend l’exécution d’une action différée qui est à la charge d’un autre paquet.
  • t pour triggers-pending : une action différée de ce paquet a été activée, il reste à l’exécuter.

Exemples :

  • un statut rc veut dire que le paquet est supprimé mais que des fichiers de configuration persistent sur le système.
  • un statut ii indique que le paquet est correctement installé et configuré.
  • un statut iF indique que le paquet est installé mais sa configuration est tombé en erreur (exemple : service qui n’a pas redémarré).
  • etc.

Vous voilà parés !