Gestion des packages APT sur Debian/Ubuntu

La gestion des packages Debian est un sujet abordé à maintes reprises sur internet toutefois il est facile d’oublier ces commandes et il faut régulièrement les rechercher. Le but de cet article est donc de lister la plupart de ces commandes pour pouvoir se les remettre en mémoire plus facilement quand on veut s’en servir.

Brièvement, les packages Debian peuvent être gérés au moyen de 3 commandes:

  • apt-get
  • apt-cache
  • dpkg

apt-get et apt-cache sont des outils de haut niveau qui permettent d’effectuer une gestion intelligente de packages en prenant en compte les dépendances, les versions et les éventuels conflits entre packages. Ils utilisent des sources pour les packages. La plupart du temps, ces sources sont des repositories sur internet. Dans la majorité des cas, il est préférable d’utiliser ces commandes car elles garantissent une cohésion dans l’ensemble des packages installés sur le système.

apt-get permet d’éditer la base du gestionnaire de packages en effectuant des opérations d’installation, de suppression, de mise à jour ou de nettoyage (pour supprimer des packages inutiles). Chaque opération se fait en prenant en compte les éventuelles dépendances entre packages. Pour un package donné, cet outil va installer les dépendances correspondantes si nécessaire. apt-cache effectue des opérations sur la base en lecture seule comme la recherche de packages ou l’affichage d’informations concernant un package.

dpkg est un outil plus bas niveau qui permet d’effectuer des opérations basiques sur un package particulier: installation, suppression ou mise à jour d’un package. Cet outil peut être utilisé quand on considère un package qui n’a pas de dépendances ou quand on souhaite installer des packages qui ne sont pas présents dans la distribution et dont on possède le fichier .deb.

Base du gestionnaire de packages

Dans un premier temps, la gestion des packages se fait en utilisant des sources. On peut renseigner et éditer ces sources à partir du fichier /etc/apt/sources.list. Ce fichier contient les liens des sources pour les packages d’une distribution utilisant le système de packages APT (principalement Debian et Ubuntu).

Ce fichier contient un couple de lignes indiquant les sources avec une syntaxe particulière.

  1. Dans l’entête de chaque ligne est indiquée le type de packages concernés:
    • deb: cette ligne indique la source pour les packages binaires.
    • deb-src: cette ligne indique la source pour les packages contenant du code source (utilisés pour effectuer du développement).
  2. Ensuite, chaque ligne indique l’URL de la source
  3. L’indication suivante correspond au nom de la distribution ou de la catégorie de version:
    • Nom de la distribution: si c’est le nom de la distribution qui est indiquée alors seuls les packages de cette distribution seront installés. Si la distribution devient obsolète et est remplacée, les packages ne seront pas mis à jour.

      Les versions des distributions Debian sont:

      Version Nom de la distribution
      Buster Prochaine version
      9 Stretch Version stable actuelle
      8 Jessie
      7 Wheezy
      6 Squeeze
      5.0 Lenny
      4.0 Etch
      3.1 Sarge
      3.0 Woody
      2.2 Potato
      2.1 Slink
      2.0 Hamm
    • Catégorie de version: lorsqu’on utilise la catégorie de version, on permet au gestionnaire de packages de faire évoluer les packages installés en fonction de l’avancement de la version de la distribution:
      • oldstable: version stable précédent la version actuelle.
      • stable: version stable actuelle. Les packages correspondent aux packages stable de la version “Stretch”.
      • testing: packages en phase de test.
      • unstable: packages en cours de développement.
  4. Les indications suivantes indiquent l’ensemble de packages que l’on souhaite télécharger. On peut indiquer un ou plusieurs ensembles:
    • main: packages se conformant aux Principes du logiciel libre selon Debian (Debian Free Software Guidelines ou DFSG) sans autres dépendances.
    • contrib: ensemble de packages se conformant aux DFSG ayant des dépendances en dehors de l’ensemble main.
    • non-free: ensemble de packages qui ne se conforment pas aux DFSG.

    Dans le cas où on veut les packages provenant des 3 ensembles, il faut écrire les ensembles à la suite:

    main contrib non-free
    

Par défaut, le contenu du fichier /etc/apt/sources.list pour la version actuelle “Stretch” est:

deb http://deb.debian.org/debian stretch main  
deb-src http://deb.debian.org/debian stretch main 
 
deb http://deb.debian.org/debian stretch-updates main  
deb-src http://deb.debian.org/debian stretch-updates main  

deb http://security.debian.org/debian-security/ stretch/updates main  
deb-src http://security.debian.org/debian-security/ stretch/updates main 

D’autres fichiers contenant des sources peuvent être renseignés dans le répertoire:

/etc/apt/sources.list.d 

Ce répertoire est généralement utilisé pour indiquer d’autres sources que les sources officielles Debian.

A chaque modification de /etc/apt/sources.list ou d’un fichier dans le répertoire /etc/apt/sources.list.d, il faut mettre à jour la liste de packages disponibles en exécutant en tant qu’utilisateur root:

apt-get update

Les clés de confiance utilisées par APT pour vérifier les fichiers téléchargés se trouvent dans le répertoire:

/etc/apt/trusted.gpg.d

Il faut ajouter une clé dans ce répertoire pour chaque source ajoutée dans le répertoire /etc/apt/sources.list.d.

apt-get

Utilisateur root

Pour exécuter les commandes apt-get, il faut se connecter en tant qu’utilisateur root en exécutant sous Debian:

user@debian:~% su

Sous Ubuntu, pour se connecter en tant qu’utilisateur root, on peut exécuter:

user@ubuntu:~% sudo su

Il est aussi possible de précéder les commandes avec:

user@ubuntu:~% sudo <commande à exécuter>

Pour afficher l’aide concernant cette commande:

user@debian:~% man apt-get

Les commandes principales concernant apt-get sont les suivantes:

Installation de packages

Pour installer un package:

root@debian:~% apt-get install <nom du package> 

Il est possible d’installer plusieurs packages en les écrivant à la suite:

root@debian:~% apt-get install <nom du package 1> <nom du package 2> 

Suppression de packages

Pour supprimer un package:

root@debian:~% apt-get remove <nom du package> 

Pour supprimer un package et ses fichiers de configuration:

root@debian:~% apt-get purge <nom du package> 

Mise à jour de la liste de packages

Pour mettre à jour la liste des packages disponibles dans la base locale du gestionnaire de packages:

root@debian:~% apt-get update 

Il faut exécuter cette commande à chaque fois qu’on met à jour les fichier /etc/apt/sources.list ou un fichier se trouvant dans le répertoire /etc/apt/sources.list.d/.

Mettre à jour des packages

Pour mettre à jour tous les packages installés (dernière version installée à partir des sources):

root@debian:~% apt-get upgrade 

Pour migrer vers une version supérieure de Debian:

root@debian:~% apt-get dist-upgrade 

Pour supprimer les packages inutiles (c’est-à-dire qui ne pourront plus être téléchargés à partir des sources)

root@debian:~% apt-get autoclean 

Le cache de packages

Pour supprimer les packages se trouvant dans le cache (c’est-à-dire dans le répertoire /var/cache/apt/archives):

root@debian:~% apt-get clean 

apt-cache

Il n’est pas nécessaire de se connecter en tant qu’utilisateur root pour exécuter cette commande.

Pour afficher l’aide concernant cette commande:

user@debian:~% man apt-cache

Pour chercher un package dans la base des packages disponibles, utilisez la commande suivante :

user@debian:~% apt-cache search <liste de mots clés> 

Par exemple, pour chercher un compilateur Fortran, tapez:

user@debian:~% apt-cache search fortran compiler 

Informations sur un package

Pour afficher les caractéristiques et la description d’un package:

user@debian:~% apt-cache show <nom du package> 

Liste des packages disponibles

Pour afficher la liste des packages disponibles pour le système:

user@debian:~% apt-cache pkgnames 

dpkg

Comme indiqué plus haut, dpkg doit être utilisé lorsqu’on veut installer un package sous forme de fichier .deb et qu’on ne souhaite pas utiliser les sources indiquées dans le fichier /etc/apt/sources.list.

dpkg peut aussi être utilisé pour afficher des informations relatives à un package installé même s’il a été installé avec apt-get.

Pour afficher l’aide concernant cette commande:

user@debian:~% man dpkg

Installation

Pour installer un package:

root@debian:~% dpkg –i <fichier .deb du package> 

Ou

root@debian:~% dpkg --install <fichier .deb du package> 

Comme dpkg ne gère pas les dépendances, si on souhaite installer un package avec des dépendances, il faut installer le package et ses dépendances en même temps. On indique, ainsi, tous les fichiers .deb à la suite:

root@debian:~% dpkg –i <package1> <package2> 

Suppression

Pour supprimer un package:

root@debian:~% dpkg -r <nom du package> 

Ou

root@debian:~% dpkg --remove <nom du package> 

Pour supprimer un package avec ses fichiers de configuration:

root@debian:~% dpkg --purge <nom du package> 

Reconfiguration d’un package

Pour réconfigurer un package déjà installé:

root@debian:~% dpkg-reconfigure <nom du package> 

Informations concernant un package

Pour indiquer le package qui a installé un fichier particulier:

user@debian:~% dpkg -S <chemin du fichier> 

Par exemple, pour savoir quel est le package qui a installé /usr/bin/vim:

user@debian:~% dpkg -S /usr/bin/vim 

Afficher la liste des fichiers installés par un package:

user@debian:~% dpkg -L <nom du package> 

Afficher la liste des fichiers contenus dans un fichier .deb

user@debian:~% dpkg --contents <fichier .deb> 

Afficher les données relatives à un package:

user@debian:~% dpkg –s <nom du package>  

Informations sur les packages installés

Afficher la liste des packages installés sur le système:

user@debian:~% dpkg –l 

On peut filtrer en utilisant des termes à chercher:

user@debian:~% dpkg –l <termes à chercher> 

On peut aussi utiliser des wildcards:

user@debian:~% dpkg –l "v*" 

Supprimer des “locks” en cas d’erreur

Quand on exécute dpkg ou apt-get on peut tomber sur l’erreur suivante:

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable) 
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

Cette erreur est due à une erreur survenue précédemment lors de l’exécution d’une commande dpkg ou apt-get. Suite à cette erreur, le ou les locks posés n’ont pas été supprimés. Pour réutiliser apt-get ou dpkg, il faut supprimer ces locks.

Pour les supprimer, il faut se connecter en tant qu’utilisateur root et exécuter:

root@debian:~% rm /var/lib/apt/lists/lock 
root@debian:~% rm /var/cache/apt/archives/lock 
root@debian:~% rm /var/lib/dpkg/lock 

Leave a Reply