Aller au contenu
Administration Linux medium

Administrer les paquets avec APT

12 min de lecture

Sur Debian, Ubuntu et leurs dérivées, APT est l'outil qui installe, met à jour et supprime les logiciels, en gérant automatiquement les dépendances. Ce guide couvre les commandes du quotidien, le fonctionnement des dépôts (avec le nouveau format deb822), l'ajout sécurisé d'un dépôt tiers via une clé GPG, et le dépannage des erreurs fréquentes. Il s'adresse aux administrateurs débutants à intermédiaires sur Debian/Ubuntu. Pour les autres familles, voyez dnf (Red Hat, Fedora), Pacman (Arch) ou APK (Alpine).

  • Utiliser les commandes APT essentielles (installer, mettre à jour, supprimer)
  • Comprendre les dépôts et le format moderne deb822
  • Ajouter un dépôt tiers avec sa clé GPG, sans apt-key
  • Verrouiller une version et gérer les priorités
  • Dépanner les erreurs APT courantes
  • Une machine Debian ou Ubuntu (les exemples utilisent Debian 13 « trixie » et Ubuntu 24.04)
  • Un compte avec les droits sudo
  • Quelques bases de ligne de commande Linux

Deux familles de commandes coexistent et prêtent à confusion. apt est l'interface moderne et conviviale, pensée pour l'usage interactif : sortie lisible, barre de progression, couleurs depuis APT 3.0 (Debian 13). apt-get et apt-cache sont les commandes historiques, à la sortie stable.

La règle est simple : apt au clavier, apt-get dans les scripts. APT vous le rappelle d'ailleurs lui-même si vous scriptez apt :

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Autrement dit, l'affichage d'apt peut changer d'une version à l'autre : un script qui parse sa sortie cassera. Dans un playbook ou un Dockerfile, préférez apt-get install -y.

Voici les commandes que vous utiliserez tous les jours. Chacune agit sur le cache local des métadonnées ou sur les paquets installés.

  • Mettre à jour la liste des paquets :

    Fenêtre de terminal
    sudo apt update

    Cette commande interroge les dépôts et télécharge les métadonnées des versions disponibles, sans rien installer. C'est le préalable à toute installation. Important : apt update ne met pas à jour les logiciels, seulement le cache local.

  • Mettre à jour les paquets installés :

    Fenêtre de terminal
    sudo apt upgrade

    Met à jour les paquets installés vers leur dernière version, sans en supprimer ni en ajouter de nouveaux.

  • Mettre à jour, y compris les changements de dépendances :

    Fenêtre de terminal
    sudo apt full-upgrade

    Plus complète qu'upgrade, elle accepte de supprimer ou ajouter des paquets pour résoudre les dépendances. Utile lors d'une montée de version, à lire attentivement avant de valider.

  • Installer un paquet (et ses dépendances automatiquement) :

    Fenêtre de terminal
    sudo apt install nginx

    Pour forcer une version précise :

    Fenêtre de terminal
    sudo apt install nginx=1.26.0-1
  • Supprimer un paquet, en gardant ou non sa configuration :

    Fenêtre de terminal
    sudo apt remove nginx # garde les fichiers de /etc
    sudo apt purge nginx # supprime aussi la configuration
  • Retirer les dépendances devenues inutiles :

    Fenêtre de terminal
    sudo apt autoremove
  • Rechercher et inspecter un paquet :

    Fenêtre de terminal
    apt search <mot_clé> # cherche dans le cache local
    apt show nginx # version, taille, dépendances, description
  • Nettoyer les archives téléchargées :

    Fenêtre de terminal
    sudo apt clean # supprime tout /var/cache/apt/archives/
    sudo apt autoclean # supprime seulement les .deb obsolètes

APT télécharge les paquets depuis des dépôts déclarés dans des fichiers de configuration. Deux formats coexistent aujourd'hui.

Depuis Debian 12 et Ubuntu 24.04, le format par défaut est deb822 : des fichiers .sources dans /etc/apt/sources.list.d/, plus lisibles et plus faciles à automatiser. Sur Debian 13, le dépôt principal vit dans /etc/apt/sources.list.d/debian.sources :

Types: deb
URIs: http://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.pgp

Chaque champ est explicite : Types (deb pour les binaires), URIs (le serveur), Suites (la version, ici trixie), Components (les sections) et surtout Signed-By, qui lie le dépôt à sa clé de signature. C'est ce dernier champ qui sécurise la chaîne.

Le format historique, une ligne par dépôt dans /etc/apt/sources.list, reste accepté :

deb http://deb.debian.org/debian bookworm main contrib non-free-firmware

On le croise encore partout, mais il est progressivement remplacé par deb822. Pour un nouveau dépôt, préférez le format .sources.

Précision utile, parce que beaucoup d'articles l'exagèrent : le format une ligne est déprécié, pas supprimé, et la page de manuel de Debian 13 annonce un retrait pas avant 2029. Rien ne presse donc pour convertir un serveur existant. Quand vous déciderez de le faire, APT 3.0 fournit la commande apt modernize-sources, qui convertit les fichiers et sauvegarde les originaux. Elle est détaillée, avec ses limites, dans le guide Debian 13 « Trixie ».

Que ce soit en une ligne ou en deb822, les composants classent les logiciels par licence et par rôle :

ComposantContenu
mainlogiciels libres officiellement supportés
contriblogiciels libres dépendant d'éléments non libres
non-free / non-free-firmwarelogiciels ou firmwares non entièrement libres
securitymises à jour de sécurité
backportsversions récentes rétroportées vers la stable

Après toute modification des sources, rechargez l'index :

Fenêtre de terminal
sudo apt update

Installer un logiciel absent des dépôts officiels (Docker, Node.js, etc.) demande d'ajouter un dépôt tiers. La règle d'or : toujours vérifier la signature des paquets avec la clé GPG de l'éditeur.

La méthode correcte tient en deux temps. D'abord, télécharger la clé de l'éditeur dans un keyring dédié :

Fenêtre de terminal
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg

gpg --dearmor convertit la clé au format binaire attendu. Ensuite, déclarer le dépôt en deb822 en pointant Signed-By sur ce keyring :

/etc/apt/sources.list.d/nodesource.sources
Types: deb
URIs: https://deb.nodesource.com/node_22.x
Suites: nodistro
Components: main
Signed-By: /usr/share/keyrings/nodesource.gpg

Un sudo apt update valide la configuration : si la clé correspond, les paquets du dépôt deviennent disponibles ; sinon, APT refuse le dépôt plutôt que d'installer un paquet non vérifié.

Sur Ubuntu et ses dérivées, la commande apt-add-repository (paquet software-properties-common) automatise l'ajout d'un dépôt, notamment les PPA hébergés sur Launchpad :

Fenêtre de terminal
sudo apt-add-repository ppa:graphics-drivers/ppa
sudo apt update

Pour retirer un dépôt ou un PPA, ajoutez --remove. Les PPA n'existent pas sur Debian standard ; n'ajoutez que des PPA d'éditeurs de confiance, car ils ont le même niveau d'accès que les dépôts officiels.

APT permet de figer une version ou d'arbitrer entre plusieurs sources, ce qui est précieux sur un serveur de production.

Voir quelle version sera installée avec apt policy

Section intitulée « Voir quelle version sera installée avec apt policy »
Fenêtre de terminal
apt policy bash
bash:
Installed: 5.2.37-2+b9
Candidate: 5.2.37-2+b9
Version table:
*** 5.2.37-2+b9 500
500 http://deb.debian.org/debian trixie/main amd64 Packages
100 /var/lib/dpkg/status

Installed est la version présente, Candidate celle qui s'installerait, et la table liste les versions disponibles avec leur priorité et leur origine. Indispensable pour comprendre pourquoi APT choisit telle version.

Dans /etc/apt/preferences.d/, un fichier de préférences impose une priorité à une source. Exemple pour privilégier Node.js depuis le dépôt NodeSource :

/etc/apt/preferences.d/nodejs
Package: nodejs
Pin: origin deb.nodesource.com
Pin-Priority: 600

Une Pin-Priority supérieure à 500 rend la source prioritaire ; 1001 force l'installation même en cas de retour à une version antérieure. À manier avec prudence : un pin mal réglé peut bloquer des mises à jour de sécurité.

Pour empêcher la mise à jour d'un paquet (par exemple un noyau ou une base de données validée) :

Fenêtre de terminal
sudo apt-mark hold postgresql-16 # verrouille
apt-mark showhold # liste les paquets verrouillés
sudo apt-mark unhold postgresql-16 # déverrouille

La gestion des paquets est un point sensible de la sécurité d'un serveur. Quelques règles limitent les risques.

  • Appliquer les mises à jour régulièrement. Un sudo apt update && sudo apt upgrade fréquent applique les correctifs de sécurité. Sur un serveur exposé, c'est non négociable.

  • N'ajouter que des dépôts de confiance. Chaque dépôt tiers peut installer du code avec les droits root. Vérifiez l'éditeur et la clé GPG, et limitez le nombre de sources externes.

  • Automatiser les correctifs de sécurité avec le paquet unattended-upgrades, qui applique seul les mises à jour critiques :

    Fenêtre de terminal
    sudo apt install unattended-upgrades
    sudo dpkg-reconfigure --priority=low unattended-upgrades
  • Versionner /etc/apt/. Avant une grosse opération, sauvegardez votre configuration de dépôts. L'outil etckeeper versionne automatiquement /etc dans un dépôt Git, ce qui permet de revenir en arrière après une modification hasardeuse.

Même bien utilisé, APT peut se bloquer. Voici les erreurs les plus fréquentes et leur correction.

SymptômeCause probableSolution
dpkg was interruptedInstallation interrompuesudo dpkg --configure -a
Dépendances non satisfaitesPaquets casséssudo apt --fix-broken install
Cache corrompu, erreurs de lectureArchives endommagéessudo apt clean && sudo apt update
NO_PUBKEY à l'updateClé GPG du dépôt absenteRéinstaller la clé en keyring Signed-By
404 Not FoundURL ou suite invalide dans les sourcesCorriger le .sources ou le sources.list
Paquet impossible à retirerPaquet en état instablesudo dpkg --remove --force-remove-reinstreq <paquet>

Pour comprendre l'origine d'un incident, les journaux APT retracent chaque opération :

Fenêtre de terminal
cat /var/log/apt/history.log # paquets installés, mis à jour, supprimés
cat /var/log/apt/term.log # sortie détaillée des opérations

Mettez ces gestes en situation sur une VM jetable : installer un paquet avec apt, le figer avec un hold pour qu'une mise à jour l'ignore, et identifier quel paquet possède un fichier avec dpkg.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

  • apt pour le clavier, apt-get/apt-cache pour les scripts (interface stable).
  • apt update rafraîchit le cache ; apt upgrade met à jour les paquets installés.
  • Les dépôts se déclarent désormais en deb822 (.sources), avec un champ Signed-By.
  • apt-key est supprimé : une clé GPG va dans un keyring dédié, référencé par Signed-By.
  • apt policy montre quelle version s'installera ; apt-mark hold verrouille un paquet.
  • Un NO_PUBKEY se règle en réinstallant la clé, jamais avec apt-key.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn