Linux / Commande dpkg : examiner un .deb et vérifier l’état des paquets

dpkg gère les paquets Debian et leur état enregistré sur la machine. Il permet notamment d’interroger un paquet installé et d’installer un fichier .deb local, mais dpkg -i ne télécharge pas les dépendances manquantes depuis les dépôts. Pour installer un .deb avec résolution des dépendances disponibles, envisagez apt install avec un chemin local explicite.

Consulter l’état local d’un paquet

Ces exemples concernent Debian, Ubuntu et leurs dérivées utilisant dpkg. Commencez par cat /etc/os-release et dpkg --version. Les consultations ne demandent généralement pas sudo ; les installations et suppressions demandent les droits appropriés.

dpkg [OPTIONS] ACTION [PAQUET_OU_FICHIER ...]
dpkg -s bash

-s lit l’entrée de bash dans la base d’état locale. Examinez Package, Status, Version et Architecture lorsqu’ils sont présents. Si le paquet est correctement dépaqueté et configuré, le champ Status habituel est :

Status: install ok installed

Il s’agit d’un état enregistré, pas d’un test du fonctionnement de l’application ni d’une preuve que ses fichiers sont restés identiques. unpacked indique un paquet dépaqueté mais non configuré ; half-configured indique que la configuration a commencé sans aboutir. Un état config-files peut subsister après suppression : une entrée encore consultable ne signifie donc pas toujours que le logiciel est installé.

Pour une ligne de sortie explicitement choisie, appelez l’outil de consultation sous-jacent :

dpkg-query -W -f='${binary:Package}\t${Status}\t${Version}\n' bash

Les apostrophes empêchent le shell d’interpréter les références de champs destinées à dpkg-query. La ligne doit contenir le nom, l’état et la version effectivement enregistrés, séparés par des tabulations. Ne remplacez pas la vérification de Status par la simple présence d’un numéro de version.

Lister les fichiers et rechercher leur paquet

dpkg -L bash

-L affiche les chemins enregistrés pour le paquet. Choisissez un chemin exact observé dans cette liste, puis demandez son propriétaire. Par exemple, si /bin/bash figure dans votre résultat :

dpkg -S /bin/bash

Les chemins peuvent différer selon l’organisation de la distribution, notamment entre /bin et /usr/bin. Utilisez le nom réellement enregistré ; un lien ou un chemin équivalent du système de fichiers n’a pas nécessairement la même correspondance textuelle dans la base.

-L et -S ne listent pas tous les fichiers créés par les scripts d’installation ni toutes les alternatives. Ils ne prouvent pas non plus qu’un chemin existe encore avec son contenu original. À l’inverse, un fichier sans correspondance n’est pas automatiquement malveillant : il peut provenir d’une installation manuelle ou être généré par un logiciel. La documentation dpkg-query et ses limites de recherche précise ces distinctions.

Examiner un fichier .deb avant de choisir l’installation

Un .deb est une archive de paquet binaire, pas simplement un programme à copier. Le nom example.deb ci-dessous est un exemple : remplacez-le par un fichier déjà obtenu auprès d’une source fiable, prévu pour votre distribution et votre architecture. Ne téléchargez pas un paquet au hasard pour reproduire les commandes.

dpkg-deb --info ./example.deb
dpkg-deb --field ./example.deb Package Version Architecture Depends
dpkg-deb --contents ./example.deb
dpkg --print-architecture

--info présente les métadonnées de l’archive, --field extrait les champs demandés et --contents liste les chemins du contenu. Le champ Depends peut être absent si le paquet n’en déclare pas. Comparez l’architecture annoncée avec celle du système ; une architecture all désigne habituellement un paquet indépendant de l’architecture matérielle.

Ces lectures décrivent l’archive sur disque. Elles ne consultent pas l’état d’installation du paquet et n’authentifient pas son fournisseur. Une structure valide et une description rassurante ne suffisent pas à rendre le paquet fiable. L’installation peut exécuter des scripts avec les privilèges administrateur ; vérifiez la provenance et les conditions de compatibilité avant toute confirmation.

Extraire les fichiers d’un .deb n’équivaut pas à l’installer : l’enregistrement dans la base, la configuration et les scripts font aussi partie du traitement. Le manuel dpkg-deb distingue précisément l’examen et l’extraction de l’installation.

Installer le fichier choisi et contrôler le résultat

Lorsque la source, la compatibilité et les effets du paquet ont été examinés, l’installation directe avec dpkg prend cette forme :

sudo dpkg -i ./example.deb

dpkg traite ce fichier mais ne va pas chercher les dépendances manquantes dans les dépôts. Une erreur peut donc laisser un paquet dépaqueté sans configuration terminée. Ne considérez pas un échec comme une annulation automatique de tous les changements.

Comme alternative, un APT récent peut résoudre les dépendances satisfaisables depuis les sources configurées :

sudo apt install ./example.deb

Le chemin ./ indique le fichier du dossier courant. Cette commande est une autre méthode, pas une deuxième étape obligatoire après dpkg -i. Lisez le plan complet ; APT ne peut pas rendre compatible un paquet conçu pour un système différent, et traiter un fichier local ne rend pas son fournisseur digne de confiance.

La référence Debian sur la gestion des paquets et des .deb locaux explique ce rôle d’APT. Le guide apt et de lecture des dépendances développe l’examen du plan.

Après réussite, utilisez dpkg -s avec le nom du champ Package lu dans le .deb, et non nécessairement le nom de fichier example.deb. Vérifiez l’état installed puis le fonctionnement attendu du logiciel. Si une erreur de dépendances est survenue, examinez l’état et les dépendances avant une réparation ; une simulation apt-get -s --fix-broken install peut montrer une solution, y compris des suppressions, mais ne doit pas être appliquée aveuglément.

Distinguer retrait, purge et véritable restauration

Action Portée
-s paquet Lire l’état enregistré localement.
-L paquet Lister les chemins enregistrés pour le paquet.
-S chemin Rechercher un propriétaire dans la base.
-i fichier.deb Installer l’archive locale sans téléchargement automatique des dépendances.
-r paquet Retirer le paquet en conservant normalement ses conffiles.
-P paquet Purger aussi les configurations gérées et les éléments traités par le script de purge.

Les conffiles sont les fichiers de configuration suivis comme tels par le paquet. Une purge n’est pas un effacement général des données créées dans tous les dossiers personnels. Inversement, les scripts de retrait peuvent avoir des effets : sauvegardez ce qui doit être récupérable et examinez les dépendances avant suppression.

Retirer un paquet ne restaure pas exactement un état antérieur, surtout après une mise à niveau ou une modification de service. N’utilisez pas d’options de force pour ignorer un conflit sans en comprendre la cause. Les états et actions sont détaillés dans le manuel officiel dpkg.