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
apt-get
Installation de packages
Suppression de packages
Mise à jour de la liste de packages
Mettre à jour des packages
Le cache de packages
apt-cache
Recherche d’un package
Informations sur un package
Liste des packages disponibles
dpkg
Installation
Suppression
Reconfiguration d’un package
Informations concernant un package
Informations sur les packages installés
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.
- 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).
- Ensuite, chaque ligne indique l’URL de la source
- 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.
- 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 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
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
Recherche d’un package
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
- SourcesList: https://wiki.debian.org/fr/SourcesList
- Les versions de Debian: https://www.debian.org/releases/index.fr.html
- Debian Free Software Guidelines: https://en.wikipedia.org/wiki/Debian_Free_Software_Guidelines
- Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?: https://askubuntu.com/questions/15433/unable-to-lock-the-administration-directory-var-lib-dpkg-is-another-process
- APT Cheat Sheet: https://blog.packagecloud.io/eng/2015/03/30/apt-cheat-sheet/