Chapitre 8. Outils de gestion des paquets Debian

Table des matières

8.1. Quels sont les programmes fournis par Debian pour la gestion des paquets ?
8.1.1. dpkg
8.1.2. APT
8.1.3. aptitude
8.1.4. synaptic
8.1.5. tasksel
8.1.6. Autres outils de gestion des paquets
8.2. Debian prétend pouvoir mettre à jour un programme en fonctionnement ; comment est-ce que c'est possible ?
8.3. Comment savoir si un paquet est déjà installé sur un système Debian ?
8.4. Comment afficher la liste des fichiers d'un paquet installé ?
8.5. Comment trouver le paquet contenant un fichier particulier ?
8.6. Pourquoi « foo-data » n'est-il pas supprimé quand je désinstalle « foo » ? Comment s'assurer que des paquets obsolètes de bibliothèques sont purgés ?

8.1. Quels sont les programmes fournis par Debian pour la gestion des paquets ?

Il y a beaucoup d'outils utilisés pour la gestion des paquets Debian, depuis des outils basés sur des interfaces texte ou graphique aux outils de bas niveau utilisés pour l'installation des paquets. Tous les outils disponibles reposent sur les outils de plus bas niveau pour fonctionner correctement et sont présentés ici selon un niveau de complexité décroissant.

Il est important de comprendre que les outils de gestion des paquets Debian de plus haut niveau comme aptitude ou synaptic reposent sur apt qui, lui-même, utilise dpkg pour la gestion des paquets sur le système.

Consultez le Chapitre 2. Gestion des paquets Debian de la Référence Debian pour plus d'informations sur les outils de gestion des paquets Debian. Ce document est disponible dans différentes langues et formats, voir l'entrée Référence de l'aperçu des manuels utilisateur et développeur Debian (DDP).

8.1.1. dpkg

C'est le programme principal de gestion des paquets. Dpkg peut être exécuté avec beaucoup d'options. Quelques utilisations courantes :

  • Afficher toutes les options : dpkg --help.

  • Afficher le fichier control (et d'autres informations) pour un paquet particulier : dpkg --info foo_VVV-RRR.deb.

  • Installer un paquet (incluant le désarchivage et la configuration) sur le disque dur : dpkg --install foo_VVV-RRR.deb.

  • Désarchiver (mais sans configurer) une archive Debian dans le système de fichiers du disque dur : dpkg --unpack foo_VVV-RRR.deb. Notez que cette opération ne laisse pas nécessairement le paquet dans un état utilisable ; certains fichiers peuvent avoir besoin de personnalisation pour fonctionner correctement. Cette commande supprime toute version déjà installée du programme et exécute le script preinst (voir Section 7.6, « Qu'est-ce qu'un script Debian preinst, postinst, prerm et postrm ? ») du paquet.

  • Configurer un paquet qui a déjà été désarchivé : dpkg --configure foo. Entre autres choses, cette action lance le script postinst (voir Section 7.6, « Qu'est-ce qu'un script Debian preinst, postinst, prerm et postrm ? ») du paquet. Il met aussi à jour les fichiers listés dans le fichier conffiles pour ce paquet. Notez que l'option configure prend un nom de paquet (par exemple, foo) et non le nom de l'archive Debian (par exemple, foo_VVV-RRR.deb).

  • Extraire un fichier nommé « blurf » (ou un groupe de fichiers nommés « blurf* ») depuis une archive Debian : dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf - 'blurf*'.

  • Supprimer un paquet (mais pas ses fichiers de configuration) : dpkg --remove foo.

  • Supprimer un paquet (ainsi que ses fichiers de configuration) : dpkg --purge foo.

  • Lister l'état de l'installation des paquets contenant la chaîne (ou l'expression rationnelle) « foo* » : dpkg --list 'foo*'.

8.1.2. APT

APT (Advanced Package Tool) est une interface avancée pour le système de gestion des paquets Debian et il fournit le programme apt-get. Il fournit des outils en ligne de commandes pour chercher et gérer des paquets, ainsi que pour chercher des informations à leur sujet ou accéder à toutes les fonctionnalités de bas niveau de la bibliothèque d'arborescence libapt-pkg. Pour plus d'informations, voir le guide de l'utilisateur dans /usr/share/doc/apt-doc/guide.html/index.html (il vous faudra installer le paquet apt-doc).

À partir de Debian Jessie, certaines commandes fréquemment utilisées comme apt-get et apt-cache ont des équivalents dans le nouveau binaire apt. Cela signifie que certaines commandes populaires telles que apt-get update, apt-get install, apt-get remove, apt-cache search, ou apt-cache show sont disponibles maintenant à l’aide d’apt, ce qui donne apt update, apt install, apt remove, apt search, ou apt show. Voici un aperçu des anciennes et des nouvelles commandes :

 apt-get update             ->  apt update
 apt-get upgrade            ->  apt upgrade
 apt-get dist-upgrade       ->  apt full-upgrade
 apt-get install paquet    ->  apt install paquet
 apt-get remove paquet     ->  apt remove paquet
 apt-get autoremove         ->  apt autoremove
 apt-cache search chaîne    ->  apt search chaîne
 apt-cache policy paquet   ->  apt list -a paquet
 apt-cache show paquet     ->  apt show paquet
 apt-cache showpkg paquet  ->  apt show -a paquet

L'outil apt fusionne des fonctions d'apt-get et d'apt-cache, et son format de sortie par défaut est en couleurs plus jolies, ce qui le rend plus agréable pour les humains. Pour des scripts ou des cas d'usage avancé, apt-get reste préférable voire nécessaire.

apt-get provides a simple way to retrieve and install packages from multiple sources using the command line. Unlike dpkg, apt-get does not understand .deb files, it works with the packages proper name and can only install .deb archives from a source specified in /etc/apt/sources.list. apt-get will call dpkg directly after downloading the .deb archives[5] from the configured sources.

Les options les plus courantes d'apt-get :

  • Pour mettre à jour la liste des paquets connus par votre système, vous pouvez lancer :

    apt update
    

    (vous devriez exécuter cette commande régulièrement pour mettre à jour vos listes de paquets)

  • Pour installer le paquet foo et toutes ses dépendances :

    apt install foo
    
  • Pour supprimer le paquet foo de votre système :

    apt remove foo
    
  • Pour supprimer le paquet foo et ses fichiers de configuration de votre système :

    apt purge foo
    
  • Pour lister tous les paquets pour lesquels une nouvelle version est disponible, lancez :

    apt list --upgradable
    
  • Pour mettre à jour tous les paquets de votre système, sans installer de paquets supplémentaires ou en supprimer :

    apt upgrade
    
  • Pour mettre à jour votre système entier, en permettant si nécessaire l'installation de paquets supplémentaires ou la suppression de paquets :

    apt full-upgrade
    

    (La commande upgrade conserve les paquets dans leur version actuelle si la mise à jour nécessite l'installation de paquets supplémentaires pour satisfaire une nouvelle dépendance. La commande full-upgrade est moins conservatrice.)

Notez que vous devez être authentifié en tant que root pour exécuter toute commande modifiant les paquets du système.

Notez qu'apt-get installe désormais par défaut les paquets recommandés et constitue, grâce à sa solidité, le programme de référence pour la gestion des paquets en console, leur installation mais aussi la mise à niveau majeure du système.

La suite d'outils apt inclut aussi le programme apt-cache pour questionner les listes de paquets. Vous pouvez l'utiliser pour trouver des paquets fournissant des fonctionnalités spécifiques à l'aide d'une simple requête ou d'une expression rationnelle et par des questions sur les dépendances dans le système de gestion des paquets. Les options les plus courantes d'apt-cache :

  • Pour trouver les paquets dont la description contient mot :

    apt search mot
    
  • Pour afficher des informations détaillées sur un paquet :

    apt show paquet
    
  • Pour afficher les dépendances d'un paquet :

    apt-cache depends paquet
    
  • Pour afficher des informations détaillées des versions disponibles pour un paquet et les paquets ayant des dépendances inverses sur lui :

    apt-cache showpkg paquet
    

Pour plus d'informations, installez le paquet apt et lisez les pages de manuel pour apt(8), apt-get(8), sources.list(5), et installez le paquet apt-doc ainsi que /usr/share/doc/apt-doc/guide.html/index.html.

8.1.3. aptitude

Aptitude est un gestionnaire de paquet pour les systèmes Debian GNU/Linux qui fournit une interface au gestionnaire de paquet apt. Aptitude est une interface texte basée sur la bibliothèque curses. Les tâches peuvent être effectuées depuis une interface graphique ou la ligne de commande.

Aptitude peut être utilisé pour effectuer des tâches d'administration de manière rapide et facile. Il permet à l'utilisateur de voir la liste des paquets et d'effectuer des tâches d'administration de paquets comme l'installation, la mise à niveau et la suppression de paquets.

aptitude fournit les mêmes fonctionnalités que apt-get, ainsi que de nombreuses fonctions supplémentaires :

  • Aptitude permet d'accéder facilement à toutes les versions d'un paquet.

  • Aptitude facilite la recherche de logiciels obsolètes en les listant sous « Paquets obsolètes ou créés localement »

  • Aptitude inclut un système assez puissant pour rechercher des paquets particuliers. Les utilisateurs familiers avec mutt le maîtriseront rapidement car la syntaxe a été inspirée de celle de mutt.

  • Aptitude peut être utilisé pour installer les tâches prédéfinies. Pour plus d'information, consultez Section 8.1.5, « tasksel ».

  • aptitude en mode plein écran intègre les fonctionnalités de su et peut être utilisé par un utilisateur normal. Le programme su sera appelé (et le mot de passe root demandé s'il y en a un) lorsque les privilèges d'administrateur seront nécessaires.

Vous pouvez utiliser aptitude au travers d'une interface graphique (en lançant simplement aptitude) ou directement en ligne de commande. La syntaxe utilisée en ligne de commande est très similaire à celle utilisée avec apt-get. Par exemple, pour installer le paquet foo vous pouvez lancer aptitude install foo.

Notez que aptitude est le gestionnaire de paquets recommandé pour la gestion quotidienne des paquets en console.

Pour plus d'informations, lisez la page de manuel aptitude(8) et installez le paquet aptitude-doc.

8.1.4. synaptic

synaptic est un gestionnaire graphique de paquets qui vous permet d'installer, de mettre à jour et de supprimer des paquets logiciels d'une manière conviviale. En plus des fonctionnalités offertes par aptitude, synaptic permet d'éditer la liste des dépôts de logiciels et de parcourir toute la documentation relative à un paquet. Pour plus d'informations, consulez le site web de Synaptic.

8.1.5. tasksel

Lorsque vous désirez effectuer une tâche particulière, il peut être difficile de trouver les paquets appropriés à votre besoin. Les développeurs Debian ont défini des tâches : une tâche est un ensemble de paquets Debian distincts qui sont tous destinés à la même activité. Les tâches peuvent être installées en utilisant le programme tasksel ou aptitude.

Typically, the Debian installer will automatically install the task associated with a standard system and a desktop environment. The specific desktop environment installed will depend on the CD/DVD media used, most commonly it will be the GNOME desktop (gnome-desktop task). Also, depending on your selections throughout the installation process, tasks might be automatically installed in your system. For example, if you selected a language other than English, the task associated with it will be installed automatically too.

8.1.6. Autres outils de gestion des paquets

8.1.6.1. dpkg-deb

Ce programme travaille sur les fichiers archive Debian (.deb). Quelques utilisations courantes :

  • Afficher toutes les options : dpkg-deb --help.

  • Afficher les fichiers présents dans une archive Debian : dpkg-deb --contents foo_VVV-RRR.deb)

  • Extraire les fichiers contenus dans une archive Debian dans un répertoire particulier de l'utilisateur : dpkg-deb --extract foo_VVV-RRR.deb tmp extrait tous les fichiers de foo_VVV-RRR.deb dans le répertoire tmp/. C'est pratique pour examiner le contenu d'un paquet dans un répertoire localisé, sans installer le paquet sur le système de fichiers racine.

  • Extraire les fichiers de contrôle du paquet : dpkg-deb --control foo_VVV-RRR.deb tmp.

Notez que tous les paquets qui ont été simplement désarchivés en utilisant dpkg-deb --extract ne seront pas correctement installés, vous devriez employer dpkg --install à la place.

Vous trouverez plus d'informations dans la page de manuel dpkg-deb(1).

8.2. Debian prétend pouvoir mettre à jour un programme en fonctionnement ; comment est-ce que c'est possible ?

Le noyau (et le système de fichiers) dans les systèmes Debian GNU/Linux permet le remplacement de fichiers même lorsqu'ils sont utilisés.

Debian fournit aussi un programme appelé start-stop-daemon qui est utilisé pour activer les démons au démarrage du système ou les arrêter lors d'un changement de niveau d'exécution (par exemple, lors du passage du mode multi-utilisateur au niveau mono-utilisateur ou lors de l'arrêt du système). Ce programme est aussi utilisé par les scripts d'installation, lors de l'installation d'un paquet contenant un démon, pour arrêter les démons en fonctionnement et les redémarrer si nécessaire.

8.3. Comment savoir si un paquet est déjà installé sur un système Debian ?

Pour connaître l'état de tous les paquets installés sur un système Debian exécutez la commande

dpkg --list

Cela affiche un résumé sur une ligne pour chaque paquet, donnant un symbole de l'état en deux lettres (expliqué dans l'entête), le nom du paquet, la version installée et une courte description.

Pour connaître l'état de paquets dont le nom correspond au motif commençant par « foo », lancez la commande :

dpkg --list 'foo*'

Pour obtenir un rapport plus détaillé pour un paquet particulier, lancez la commande :

dpkg --status packagename

8.4. Comment afficher la liste des fichiers d'un paquet installé ?

Pour lister tous les fichiers fournis par le paquet installé foo, exécutez la commande suivante :

dpkg --listfiles foo

Rappelez-vous que les fichiers créés par les scripts d'installation ne sont pas affichés.

8.5. Comment trouver le paquet contenant un fichier particulier ?

Pour identifier le paquet qui a produit le fichier appelé foo, exécutez l'une des commandes suivantes :

  • dpkg --search foo

    Cela recherche foo dans les paquets installés. (Cela est équivalent (actuellement) à la recherche de tous les fichiers ayant une extension .list dans le répertoire /var/lib/dpkg/info/ et à ajuster la sortie pour n'afficher que les noms de tous les paquets le contenant).

    Une alternative plus rapide à cela est l'outil dlocate.

    dlocate -S foo
    
  • zgrep foo Contents-ARCH.gz

    This searches for files which contain the substring foo in their full path names. The files Contents-ARCH.gz (where ARCH represents the wanted architecture) reside in the major package directories (main, non-free, contrib) at a Debian archive site (i.e. under /debian/dists/bullseye). A Contents file refers only to the packages in the subdirectory tree where it resides. Therefore, a user might have to search more than one Contents files to find the package containing the file foo.

    Cette méthode a l'avantage par rapport à dpkg --search parce qu'elle permet de trouver des fichiers dans des paquets qui ne sont pas installés sur votre système.

  • apt-file search foo

    Si vous installez apt-file, similaire à ce qui précède, ceci recherche des fichiers qui contiennent la sous-chaîne ou l'expression rationelle foo dans leurs noms de chemin. L'avantage par rapport à l'exemple ci-dessus est que vous n'avez pas besoin de rechercher les fichiers Contents-ARCH.gz car ceci est fait automatiquement pour toutes les sources définies dans le fichier /etc/apt/sources.list quand vous lancez (sous le compte root) apt-file update.

8.6. Pourquoi « foo-data » n'est-il pas supprimé quand je désinstalle « foo » ? Comment s'assurer que des paquets obsolètes de bibliothèques sont purgés ?

Certains paquets sont découpés en un paquet pour le programme (« foo ») et un paquet pour les données « foo-data » (ou en « foo » et « foo-doc »). Cela est vrai pour beaucoup de jeux, d'applications multimédia et de dictionnaires dans Debian. Cela a été introduit parce que certains utilisateurs pourraient vouloir accéder aux données sans installer le programme ou parce que le programme peut être exécuté sans les données, ce qui rend « foo-data » facultatif.

Des situations similaires apparaissent lorsqu'il s'agit de gérer les bibliothèques : généralement elles sont installées puisque des paquets applicatifs dépendent d'elles. Lorsqu'un paquet applicatif est purgé, le paquet fournissant la bibliothèque peut être conservé sur le système. Par exemple, lorsqu'une application ne dépend plus de libdb4.2, mais de libdb4.3, le paquet libdb4.2 peut être conservé après la mise à jour du paquet applicatif.

Dans ces cas-là, « foo-data » ne dépend pas de « foo », donc quand vous supprimez le paquet « foo », la plupart des outils de gestion de paquets ne supprimeront pas automatiquement « foo-data ». Cela reste valable pour les paquets de bibliothèques. Cela est nécessaire pour ne pas avoir de dépendance circulaire. Toutefois, si vous utilisez apt-get (voir Section 8.1.2, « APT ») ou aptitude (voir Section 8.1.3, « aptitude ») comme outil de gestion de paquets, il dépistera les paquets installés automatiquement et les supprimera quand ils ne seront plus utilisés par aucun paquet.



[5] Notice that there are ports that make this tool available with other package management systems, like Red Hat package manager, also known as rpm