Commandes apt : installer, mettre à jour et supprimer des paquets sous Ubuntu et Debian
apt est le gestionnaire de paquets d'Ubuntu et de Debian : sudo apt update met à jour les listes de paquets, sudo apt upgrade installe les mises à jour, sudo apt install nom installe un paquet, sudo apt remove le supprime (purge supprime aussi les configurations), et apt autoremove retire les dépendances devenues inutiles. Pour rechercher un paquet, utilisez apt search et apt show ; pour réparer des dépendances cassées, sudo apt --fix-broken install.
apt est le gestionnaire de paquets standard d'Ubuntu, de Debian et de leurs dérivés (Linux Mint, Pop!_OS). Il télécharge les programmes depuis les dépôts, installe automatiquement les dépendances et met le système à jour en une seule commande. Vous trouverez ci-dessous les commandes apt utiles au quotidien, regroupées par tâche, ainsi que les erreurs fréquentes et leurs solutions.
Fonctionnement d'apt
Un paquet est une archive .deb contenant un programme, des métadonnées et la liste de ses dépendances. Les dépôts sont les serveurs où sont stockés les paquets ; leurs adresses se trouvent dans /etc/apt/sources.list et dans le répertoire /etc/apt/sources.list.d/. apt conserve une copie locale de la liste des paquets disponibles et s'y réfère à l'installation : il faut donc la mettre à jour régulièrement.
En coulisses, apt appelle dpkg, bas niveau qui décompresse et enregistre les paquets, mais qui ne sait pas résoudre les dépendances. Les commandes apt-get et apt-cache sont l'ancienne interface, aux fonctions équivalentes, à la sortie stable et adaptée aux scripts. apt est une enveloppe plus récente, pensée pour l'utilisateur : barre de progression, couleurs, commandes plus courtes.
La plupart des commandes qui modifient le système nécessitent les droits d'administrateur, on les lance donc avec sudo. La recherche et la consultation d'informations fonctionnent sans.
Aide-mémoire : les principales commandes apt
| Commande | Ce qu'elle fait |
|---|---|
sudo apt update | mettre à jour les listes de paquets depuis les dépôts |
sudo apt upgrade | installer les mises à jour sans supprimer de paquets |
sudo apt full-upgrade | mettre à jour en supprimant ou remplaçant des paquets si nécessaire |
sudo apt install paquet | installer un paquet avec ses dépendances |
sudo apt reinstall paquet | réinstaller un paquet |
sudo apt remove paquet | supprimer un paquet en conservant les configurations |
sudo apt purge paquet | supprimer un paquet avec ses configurations système |
sudo apt autoremove | supprimer les dépendances devenues inutiles |
apt search mot | rechercher un paquet par nom et description |
apt show paquet | description, version, dépendances, taille |
apt list --installed | liste des paquets installés |
apt list --upgradable | ce qui peut être mis à jour |
apt policy paquet | version installée, versions disponibles, sources |
sudo apt clean | vider le cache des .deb téléchargés |
sudo apt --fix-broken install | réparer les dépendances cassées |
apt update et apt upgrade : mettre le système à jour
Ce sont deux opérations distinctes, souvent confondues. apt update n'installe rien : il télécharge seulement les listes de paquets à jour. apt upgrade installe les nouvelles versions des programmes déjà présents, en s'appuyant sur ces listes.
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.
$ apt list --upgradable
$ sudo apt upgrade
L'enchaînement habituel sur un serveur, en une ligne, avec confirmation automatique :
sudo apt update && sudo apt upgrade -y
Différence entre upgrade et full-upgrade
apt upgrade peut installer de nouvelles dépendances, mais ne supprime jamais de paquet déjà installé. Si une mise à jour impose de retirer quelque chose (par exemple lors d'un changement de version du noyau ou d'une bibliothèque), ces paquets sont « mis de côté » : la sortie affiche alors The following packages have been kept back. apt full-upgrade (équivalent de apt-get dist-upgrade) autorise les suppressions et termine la mise à jour. Avant de la lancer, lisez attentivement la liste de ce que apt s'apprête à supprimer.
Mettre à jour un seul paquet
sudo apt install --only-upgrade nginx
Si le paquet n'est pas installé, la commande avec --only-upgrade ne l'installe pas : cela évite une installation accidentelle.
apt install : installer des paquets
sudo apt install nginx # un seul paquet
sudo apt install git curl htop # plusieurs à la fois
sudo apt install -y docker.io # sans question Y/n
sudo apt install nginx=1.24.0-2ubuntu7 # version précise
sudo apt install --no-install-recommends ffmpeg # sans les paquets recommandés
sudo apt install ./google-chrome-stable_current_amd64.deb # fichier .deb local
Lors d'une installation, apt indique les paquets qui seront ajoutés et la place qu'ils occuperont, puis demande confirmation. L'option -y répond « oui » automatiquement : pratique dans les scripts et les Dockerfile, mais en travail interactif, mieux vaut lire la liste.
Par défaut, apt installe non seulement les dépendances obligatoires (Depends), mais aussi les dépendances recommandées (Recommends). Sur les serveurs et dans les conteneurs, --no-install-recommends réduit nettement le volume installé.
Installer un fichier .deb : apt ou dpkg -i
Un .deb téléchargé s'installe mieux avec apt install ./fichier.deb : le chemin doit commencer par ./ ou être absolu, sinon apt cherchera un paquet de ce nom dans les dépôts. Contrairement à dpkg -i, apt télécharge lui-même les dépendances manquantes. Si vous avez déjà installé un paquet avec dpkg et obtenu une erreur de dépendances, sudo apt --fix-broken install la corrige.
sudo dpkg -i package.deb
sudo apt --fix-broken install
apt remove, purge et autoremove : supprimer des paquets
| Commande | Programme | Configurations dans /etc | Dépendances |
|---|---|---|---|
apt remove | supprimé | conservées | conservées |
apt purge | supprimé | supprimées | conservées |
apt autoremove | — | — | inutiles supprimées |
sudo apt remove nginx
sudo apt purge nginx # idem + configurations
sudo apt autoremove # restes de dépendances
sudo apt autoremove --purge # restes avec leurs configurations
remove convient si vous prévoyez de réinstaller le programme et souhaitez garder ses réglages. purge sert pour une réinstallation complète à zéro. Attention : aucune de ces commandes ne supprime les fichiers du répertoire personnel de l'utilisateur (par exemple ~/.config).
Pour repérer les paquets supprimés mais dont les configurations subsistent, cherchez l'état rc :
dpkg -l | grep '^rc'
Rechercher des paquets et obtenir des informations
apt search postgresql # recherche par nom et description
apt search --names-only '^php8' # uniquement par nom, avec expression régulière
apt show htop # version, taille, dépendances, description
apt policy docker.io # quelles versions sont disponibles et d'où
apt list --installed | grep python3
apt-cache depends curl # dont dépend le paquet
apt-cache rdepends libssl3 # quels paquets dépendent de celui-ci
À quel paquet appartient un fichier
$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl
$ dpkg -L curl # fichiers installés par le paquet
Si une commande n'est pas encore installée, Ubuntu vous indique le paquet à installer lorsque vous tentez de la lancer (message Command 'tree' not found, but can be installed with: sudo apt install tree). Pour chercher dans les fichiers de paquets non installés, l'utilitaire apt-file convient : apt-file search bin/dig après sudo apt-file update.
Figer une version : apt-mark hold
Il arrive qu'un paquet ne doive pas être mis à jour : par exemple, la version d'un SGBD ou du noyau sur un serveur de production, qui ne doit changer que manuellement. On « fige » alors le paquet :
sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16
Autre couple utile : apt-mark manual et apt-mark auto. Les paquets installés comme dépendances sont marqués comme automatiques et seront supprimés par autoremove dès qu'ils deviennent inutiles. La marque manual protège un paquet contre cette suppression.
Dépôts : ajouter une source et où elles se trouvent
La liste des sources se trouve dans /etc/apt/sources.list et dans les fichiers /etc/apt/sources.list.d/*.list. Sous Ubuntu 24.04 et Debian 12+, le format deb822 avec l'extension .sources est de plus en plus utilisé (par exemple /etc/apt/sources.list.d/ubuntu.sources).
Dépôt tiers avec sa clé
La méthode actuelle consiste à stocker la clé du dépôt séparément et à la référencer avec signed-by. La commande apt-key est obsolète et a été supprimée dans les versions récentes.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce
PPA sous Ubuntu
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa
Les PPA sont des dépôts personnels hébergés sur Launchpad. N'ajoutez que ceux auxquels vous faites confiance : les paquets qui en proviennent s'installent avec les droits root.
Cache et espace disque
Les paquets téléchargés restent dans /var/cache/apt/archives/. Sur les petits disques et dans les images Docker, il est recommandé de vider ce cache.
du -sh /var/cache/apt/archives
sudo apt clean # supprimer tout le cache des .deb
sudo apt autoclean # supprimer seulement les versions obsolètes
Dans un Dockerfile, on regroupe l'installation dans une seule couche et on supprime aussitôt les listes de paquets :
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
Dans les scripts, on utilise apt-get plutôt que apt : l'interface de apt n'est pas stable, et il l'indique lui-même (WARNING: apt does not have a stable CLI interface). Pour que l'installation ne pose aucune question, ajoutez DEBIAN_FRONTEND=noninteractive.
Erreurs apt courantes et leurs solutions
Could not get lock /var/lib/dpkg/lock-frontend
Un autre processus travaille déjà avec les paquets : un second terminal lancé avec apt, le « Centre de logiciels » ou les mises à jour automatiques en arrière-plan (unattended-upgrades). Patientez quelques minutes et vérifiez quel processus détient le verrou :
ps aux | grep -E 'apt|dpkg'
Ne supprimez pas les fichiers de verrouillage à la main tant que le processus est en cours : une installation interrompue peut laisser le système dans un état incohérent. Si le processus est réellement bloqué ou a été tué, une fois terminé, lancez sudo dpkg --configure -a.
Unable to locate package
apt ne trouve pas le paquet. Le plus souvent, vous n'avez pas lancé sudo apt update sur un système récemment installé, vous avez fait une faute de frappe dans le nom, ou le paquet se trouve dans un composant désactivé (universe sous Ubuntu). On active ce composant avec sudo add-apt-repository universe.
Unmet dependencies / held broken packages
Les dépendances ne sont plus cohérentes : cela arrive généralement après une installation manuelle de .deb ou un mélange de dépôts de versions différentes de la distribution.
sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy paquet-problematique
dpkg was interrupted
L'installation a été interrompue (terminal fermé, coupure de courant). Le message indique lui-même la solution : sudo dpkg --configure -a.
NO_PUBKEY lors d'un apt update
La clé de signature du dépôt tiers est absente ou périmée. Téléchargez la clé actuelle depuis le site du projet dans /etc/apt/keyrings/ et référencez-la avec signed-by, comme dans l'exemple Docker ci-dessus.
Mises à jour de sécurité automatiques
Sur Ubuntu Server, le paquet unattended-upgrades est installé par défaut et applique seul les mises à jour de sécurité. Pour vérifier et activer son fonctionnement :
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
Pour savoir si un redémarrage est nécessaire après une mise à jour, consultez le fichier /var/run/reboot-required : s'il existe, c'est que le noyau ou des bibliothèques essentielles ont été mis à jour.
Conclusion
Les commandes apt de base tiennent en un cycle court : update avant toute action, install pour installer, upgrade pour mettre à jour, remove ou purge pour supprimer, et autoremove pour nettoyer. Pour les versions, utilisez apt policy et apt-mark hold ; pour les casses, --fix-broken install et dpkg --configure -a ; et dans vos scripts, employez apt-get. La gestion des paquets est détaillée en pratique dans le cours Linux.
Questions fréquentes
En quoi apt diffère-t-il d'apt-get ?
Ce sont deux interfaces du même système de paquets. apt est plus agréable en usage interactif (progression, couleurs, commandes courtes), tandis qu'apt-get offre une sortie stable et est recommandé pour les scripts et les Dockerfile.
Faut-il lancer apt update avant chaque installation ?
C'est conseillé si les listes n'ont pas été mises à jour depuis longtemps : sinon apt peut ne pas trouver le paquet, ou tenter de télécharger une version qui n'est plus disponible sur le miroir et renvoyer une erreur 404.
Comment consulter l'historique des installations et suppressions avec apt ?
L'historique est écrit dans /var/log/apt/history.log (les anciennes entrées se trouvent dans les archives history.log.N.gz), et le journal détaillé de dpkg dans /var/log/dpkg.log.
Comment revenir à une version précédente d'un paquet ?
Consultez les versions disponibles avec apt policy paquet, installez la version voulue avec sudo apt install paquet=version, puis figez-la avec apt-mark hold pour éviter que la prochaine mise à jour ne rétablisse la nouvelle.
Peut-on utiliser apt sous CentOS ou Fedora ?
Non : ces distributions utilisent un autre format de paquets (rpm) et leurs propres gestionnaires, dnf et yum. apt fonctionne sous Debian, Ubuntu et leurs dérivés.
Ce sujet est traité en détail avec de la pratique dans le cours « Linux: с нуля до уверенного администрирования ».
Voir le cours