dpkg : gestionnaire de paquets pour Debian, Ubuntu ou Linux Mint

malekalmorte

Création :

2 mai 2021

Modification :

dpkg (Debian Package) est le gestionnaire de paquets des distributions Linux Debian et ses dérivés Ubuntu, Linux Mint, etc.
Elle se présente sous la forme d’une commande pour lister, installer ou supprimer un paquet .deb.
Les paquets Debian étant des fichiers .deb que l’on peut télécharger sur internet.
Il contient les fichiers d’installation et de configuration pour installer une application, librairies dans le système d’exploitation.

Ce tutoriel vous explique comment utiliser la commande dpkg pour gérer vos paquets sur les distributions Linux Debian.

dpkg : gestionnaire de paquets pour Debian, Ubuntu ou Mint

Qu’est-ce que le gestionnaire de paquets dpkg ?

dpkg est la commande de base pour gérer les paquets au sein de la distribution Debian et ses dérivés.
Elle vous permet d’installer ou supprimer un paquet du système, mais aussi gérer ceux installés.

Un paquet se présente sous la forme d’un fichier .deb.
Les sites des projets libres permettent de les télécharger ainsi que les éditeurs de logiciels tiers.
En utilisant la commande dpkg, on peut demander à installer le paquet dans le système.
Ce dernier décompresse le fichier .deb pour copier les fichiers aux emplacements par défaut puis jouer les scripts de configuration.
Enfin, l’administrateur peut aussi supprimer un paquet installé.

Le système de paquet Debian fonctionne avec une base données présente dans le dossier /var/lib/dpkg/.
Celle-ci stocke les paquets installés, supprimés ou inactifs et donc reflète l’état des paquets installés dans le système.
Par exemple, lorsque vous supprimez un paquet, ce dernier est marqué comme désinstallé dans celle-ci.
La commande dpkg interroge à tout moment cette base de données.

Enfin on trouve aussi des commandes des dérivés de la commande dpkg :

  • dpkg-divert : remplacer la version d’un fichier contenu dans un paquet
  • dpkg-query : Un outil pour interroger la base de données de dpkg
  • dpkg-split : Outil de décomposition/recomposition des paquets Debian
  • dpkg-statovveride : Annuler la propriété et le mode des fichiers
  • dpkg-trigger : Un utilitaire pour activer les actions différées de paquets

Le dossier /var/lib/dpkg/

La base de données dpkg se trouve dans le dossier /var/lib/dpkg/ avec différents fichiers ou sous-dossiers.

FichiersDescription
alternativesLes informations alternatives utilisées par la commande update-alternatives
availableLes informations des paquets disponibles, c’est à dire installés dans le système
diversions
diversions-old
Les informations de déviation utilisées par dpkg et définies par dpkg-divert.
Le fichier old est une sauvegarde
infoDossier stockant les fichiers de configuration, md5 et scripts des paquets installés
lockCe fichier indique que dpkg est en cours d’utilisation.
Cela évite d’avoir plusieurs instances de dpkg
statoverrideFichier qui contient la liste actuelle des remplacements de statistiques de
le système. Il se trouve dans l’administration de dpkg
répertoire, ainsi que d’autres fichiers importants pour dpkg, tels que
en tant que statut ou disponible
status
status-old
Les informations d’état de tous les packages.
Le fichier old est une sauvegarde
Le contenu du dossier /var/lib/dpkg/

Installer un paquet deb

On installe un paquet avec dpkg en utilisant le paramètre -i ou –install.
Par exemple :

dpkg -i vim_2%3a8.1.0875-5_amd64.deb

Lorsque vous installez un paquet par dpkg (ou indirectement par apt), ce dernier effectue 6 étapes successives :

  1. Extrait les fichiers de contrôle du nouveau package
  2. Si une autre version du même package a été installée avant la nouvelle installation, exécute le script prerm de l’ancien package
  3. Exécute le script preinst, s’il est fourni par le package
  4. Décompresse les nouveaux fichiers et sauvegarde en même temps les anciens fichiers, de sorte qu’en cas de problème, ils puissent être restaurés
  5. Si une autre version du même package a été installée avant la nouvelle installation, exécute le script postrm de l’ancien package. Notez que ce script est exécuté après le script preinst du nouveau package, car les nouveaux fichiers sont écrits en même temps que les anciens fichiers sont supprimés
  6. Configure le package :
    1. Décompresse les fichiers de configuration et sauvegardez en même temps les anciens fichiers de configuration, afin qu’ils puissent être restaurés en cas de problème
    2. Exécute le script postinst, s’il est fourni par le package

Lorsque l’on installe le paquet, on peut voir les étapes à l’écran :

  • Lecture de la base de données dpkg (/var/lib/dpkg/status)
  • Préparation puis dépaquetage du paquet
  • Installation du paquet
  • Paramétrage du paquet avec les étapes de configuration
L'installation d'un paquet deb avec les différentes étapes

Si toutes les étapes s’exécutent correctement alors le paquet est considéré comme étant installé.
Sinon une erreur s’affiche et le paquet prend un état ou statut selon à quelle phase le plantage se produit.
Ici il s’agit d’une erreur de dépendance (voir plus bas).

Erreur de traitements du paquet install avec une erreur de problèmes de dépendances

Supprimer un paquet deb

On supprime un paquet avec l’option -r ou -P.
Par exemple :

dpkg -r vim
  • -r pour –remove : supprime tout sauf les fichiers de configuration. Cela peut éviter d’avoir à reconfigurer le package s’il est réinstallé ultérieurement.
  • -P ou –purge : supprime tout, y compris les fichiers de configuration

La suppression d’un package comprend les étapes suivantes:

  1. Exécutez le script prerm
  2. Supprimez les fichiers installés
Si -a ou –pending est donné à la place d’un nom de package, alors tous les packages décompressés, mais marqués pour être supprimés ou purgés dans le fichier /var/lib/dpkg/status, sont respectivement supprimés ou purgés.
Supprimer un paquet deb avec dpkg

Les états des paquets deb

Les paquets ont des états selon les actions effectuées par l’utilisateur.
En effet, vous pouvez installer un paquet qui sera considéré comme installé si tout se passe correctement.
Mais l’installation peut planter et afficher une erreur à différentes phases.
Par exemple, si cela se produit pendant la phase de configuration, il sera alors considéré comme étant à moitié configuré.

EtatsDescription
not-installedLe package n’est pas installé sur votre système
config-filesSeuls les fichiers de configuration du package existent sur le système
half-installed
L’installation du package a été lancée, mais pas terminée pour une raison quelconque
unpackedLe package est décompressé, mais pas configuré
half-configuredLe package est déballé et la configuration a été
commencé, mais pas encore terminé pour une raison quelconque
triggers-awaitedLe package attend le traitement du déclencheur par un autre package
triggers-pendingLe package a été déclenché
installedLe paquet est correctement déballé et configuré
Les status et états des paquets .deb

Pour lister les paquets et leurs états, on utilise la commande dpkg avec l’option -l (pour list) :

dpkg -l
Résultat de la commande dpkg -l avec la liste des paquets installés et leurs états et statut

La première colonne reflète l’état du paquet avec deux caractères distincts.

Le premier caractère: L’état souhaité pour l’utilisateur. Les valeurs possibles :

  • u = Inconnu (un état inconnu)
  • i = Installer (marqué pour l’installation)
  • r = Supprimer (marqué pour suppression)
  • p = Purge (marqué pour purge)
  • h = Hold (Garder )
La suppression d’un paquet ne supprime pas les fichiers de configuration alors que purge supprime tous les fichiers liés aux paquets dans le système.

Le second caractère : Le deuxième caractère signifie l’état actuel, qu’il soit installé ou non. Les valeurs possibles sont

  • n = Non installé (Not-installed)
  • c = Fichiers de configuration (Config-files)
  • H = Semi-installé (Half-installed)
  • U = Décompressé (Unpacked)
  • F = Semi-configuré (Half-configured)
  • W = Attente de déclenchements (Triggers-awaiting)
  • t = Déclenchements en attente (Triggers-pending)
  • i = Installé (Installed)

Par exemple ii signifie que le paquet est installé dans le système alors rc signifie que le paquet est marqué comme supprimé mais les fichiers de configuration sont encore présents.
Enfin ce dernier exemple ou l’installation s’arrête après l’étape de dépaquetage du paquet et plante à l’étape d’installation à cause d’un problème de dépendance.
Du coup le paquet est e, état iU : on tente d’installer mais il s’arrête sur le statut décompressé.

Supprimer un paquet sur Debian avec dpkg

Par contre lorsque vous purgez le paquet, ce dernier n’est plus listé dans la base de données dpkg.

Purger un paquet sur Debian avec dpkg

Comment utiliser la commande dpkg

Enfin la commande dpkg permet de gérer les paquets.
Vous pouvez donc installer, supprimer des paquets ou lister ceux installés.
Le tutoriel suivant vous donne les principales utilisations de la commande dpkg :

Les dépendances entre paquets

Lorsque vous installez des programmes, ils dépendent d’autres programmes pour fonctionner. Ces autres programmes sont appelés dépendances.
En général, les dépendances sont des bibliothèques (librairies) ou des paquets liés à un langage de programmation et avec la bonne version.
Par exemple en installant fslint, cela installe des librairies (libXXX) mais aussi des paquets python, tout simplement car une partie de fslint est écrit en python.

Sans ces paquets supplémentaires, le logiciel en peut pas fonctionner.
Il faut savoir que dpkg n’est pas capable de résoudre les dépendances.
Lorsque vous installez un paquet, il faut fournir tous les paquets dont il dépend, sinon cela provoque une erreur de dépendance.

Si dessous, on tente d’installer vim alors que le paquet vim-runtime est requis.

dpkg: des problèmes de depédances empêchent la configuration de vim
vim dépend de vim-runtime (=2:8.1.075-5) ...
Le paquet vim-runtime n'est pas installé
dpkg : erreur de traitement du paquet vim (--install) :
des problèmes de dépandances - laisse non configuré

Si l’on reprend l’exemple de fslint, cela devient vite compliqué car il faut fournir une dizaines de paquets en plus.
Ne parlons pas alors des mises à niveau de la distribution qui serait tout simplement impossible à effectuer avec dpkg.
C’est pour cela que des outils supplémentaires comme apt ou aptitude existent qui sont capables de résoudre les dépendances en téléchargeant tous les paquets ligne depuis les dépôts.

Résoudre les erreurs et problèmes d’installation de paquet

Si vous rencontrez des erreurs lors de l’installation de paquet, rendez-vous dans le tutoriel suivant :

Les outils autour du système de paquets dpkg

Installer un paquet avec dpkg n’est pas compliqué en soi, mais pour les applications importantes, des dizaines de dépendances sont à satisfaire.
Il devrait alors très vite fastidieux de devoir télécharger et à installer à la main chacun des paquets.
Pour faciliter les choses, Debian a très vite mis en place des dépôts en ligne (repository) et des outils pour télécharger et installer des paquets automatiquement les paquets.
Les dépôts en ligne sont des serveurs WEB ou FTP qui mettent à disposition tous les paquets d’une version de la distribution.

Voici quelques outils utiles qui sont pour la plupart des front-end.
C’est à dire qu’ils vont en amont gérer les dépôts, téléchargement des paquets pour ensuite utiliser dpkg pour installer les paquets nécessaires.

Dselect

dselect est un programme utilisé pour gérer les paquets logiciels dans le système d’exploitation Debian.
Il possède une interface utilisateur en mode texte, un ensemble de raccourcis clavier qui est généralement considéré comme assez non intuitif, et son mécanisme de résolution des dépendances est sous-optimal.
dselect peut maintenant utiliser apt comme «méthode» dorsale pour installer des paquets.

dselect permet d’effectuer les actions suivantes :

  • Mise à jour de l’information sur les paquets
  • Sélection des paquets que vous désirez avoir sur votre système
  • Installer et mise à niveau des paquets
  • Configuration de tout paquet non configuré
  • Supprimer des applications non désirées
Dselect : gérer les paquets logiciels dans le système d'exploitation Debian

On peut très facilement naviguer et lister tous les paquets du dépôts avec le nom, version et description de tous les paquets.

Dselect : gérer les paquets logiciels dans le système d'exploitation Debian

Apt : installer et mise à jour de paquets et distribution

Advanced Package Tool (ou APT) est le gestionnaire de paquets en ligne de commande pour Debian et ses dérivés.
Il fournit des outils en ligne de commande pour rechercher, gérer et interroger des informations sur les packages disponibles sur les dépôts des distributions.
L’outil est capable de résoudre les dépendances inter-paquets.
Il permet aussi de mettre à niveau la distribution vers une nouvelle version majeure.

apt-get install : installer un paquet depuis les dépôts

Aptitude

Aptitude est une interface basée sur Ncurses et ligne de commande pour de nombreuses bibliothèques Apt, qui sont également utilisées par Apt, le gestionnaire de paquets Debian par défaut.
Ce outil est arrivé bien après apt et peut être vu comme une version améliorée.
Ainsi, dans de nombreuses situations impliquant l’installation, la suppression et la résolution de conflits pour les paquets, Aptitude prouve sa valeur plutôt qu’apt-get.

do-release-upgrade

La commande do-release-upgrade spécifique à Ubuntu permet de mettre à niveau Ubuntu.
do-release-upgrade fait partie du package «update-manager-core». Le script détermine la version vers laquelle vous allez effectuer la mise à niveau, essayez de savoir si elle est prise en charge ou non et vous plaignez de cette dernière.
Puis l’outil tous les scripts nécessaires à la mise à niveau de la distribution.

Plus globalement pour la mise à niveau d’Ubuntu :

dpkg-reconfigure

dpkg-reconfigure est un puissant outil en ligne de commande utilisé pour reconfigurer un paquet déjà installé.
C’est l’un des nombreux outils proposés sous dpkg – le système central de gestion des paquets sur Debian/Ubuntu et Linux Mint.

Essentiellement son utilisation consiste à indiquer le nom du paquet à reconfigurer.

sudo dpkg-reconfigure tzdata

A propros de malekalmorte

malekal-site-logo-150

Passionné par l'informatique depuis très jeune, j'aide les internautes sur les forums depuis 2005 pour résoudre leurs tracas informatiques.
Je vous propose par la même occasion ce site avec de nombreux tutoriels pour vous aider aussi à résoudre de manière autonome les problèmes informatiques du quotidien.