APT : Guide complet de la gestion des paquets sous Debian et Ubuntu

17 juin 2026 — par admin_libra

La gestion des paquets est l’une des tâches les plus fondamentales d’un administrateur système sous Debian ou Ubuntu. Contrairement à d’autres distributions qui utilisent rpm, dnf ou yum, l’écosystème Debian repose sur un outillage cohérent et mature : dpkg en couche basse, et APT (Advanced Package Tool) en couche haute pour résoudre les dépendances, gérer les dépôts et orchestrer les mises à jour.

La commande apt, introduite dans Debian 8 et Ubuntu 16.04 pour remplacer progressivement apt-get et apt-cache dans les usages interactifs, offre une interface unifiée, colorée et plus lisible. Sur un serveur en production sous Debian 12 Bookworm ou Ubuntu 24.04 LTS, maîtriser apt en profondeur — y compris le pinning, la gestion des sources et les marquages de paquets — est indispensable pour maintenir un système sain et prévisible.

Ce guide couvre l’ensemble des commandes apt utiles au quotidien : mise à jour du système, installation et suppression de paquets, recherche dans les dépôts, configuration des sources, nettoyage des résidus, et fonctionnalités avancées comme le gel de version (hold) et le pinning.

APT vs apt-get : lequel utiliser ?

apt est le frontal recommandé pour un usage interactif dans un terminal. Il agrège les fonctionnalités de apt-get et apt-cache avec une meilleure lisibilité : barre de progression, couleurs, résolution de conflits de dépendances améliorée. APT 3.0.3 (version présente sous Debian 12/Ubuntu 24.04) introduit notamment le résolveur solver3 par défaut et les commandes diagnostiques apt why / apt why-not.

En revanche, pour les scripts, playbooks Ansible ou Dockerfiles, préférez apt-get : son format de sortie est stable entre les versions, ses codes de retour sont normalisés, et il ne présuppose pas de TTY. La règle est simple : apt pour le terminal humain, apt-get pour la machine.

# Vérifier la version APT installée
apt --version
# apt 3.0.3 (amd64)

Mise à jour du système

apt update — synchronisation des métadonnées

apt update ne met pas à jour les paquets installés : il rafraîchit uniquement les listes de paquets disponibles depuis les dépôts configurés. Cette étape est indispensable avant toute installation ou mise à niveau.

sudo apt update

# Sortie typique :
# Hit:1 https://deb.debian.org/debian bookworm InRelease
# Hit:2 https://security.debian.org/debian-security bookworm-security InRelease
# Get:3 https://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
# Reading package lists... Done

apt upgrade et apt full-upgrade

apt upgrade met à jour les paquets installés sans jamais supprimer de paquet ni en installer de nouveau. C’est le comportement conservateur recommandé en production pour les mises à jour de sécurité courantes.

apt full-upgrade (anciennement apt-get dist-upgrade) est plus agressif : il peut installer de nouveaux paquets et en supprimer d’autres pour satisfaire les dépendances. À utiliser lors des montées de version majeures ou quand upgrade est bloqué par des conflits.

# Mise à jour sûre (ne supprime rien)
sudo apt upgrade

# Mise à jour complète (peut installer/supprimer des paquets)
sudo apt full-upgrade

# Simuler sans appliquer (dry-run)
sudo apt upgrade --dry-run

Installation et suppression de paquets

apt install

# Installer un paquet
sudo apt install htop

# Installer une version spécifique
sudo apt install nginx=1.26.*

# Installer sans confirmation interactive (utile en script, mais préférer apt-get)
sudo apt install -y curl wget

# Installer depuis un fichier .deb local (résolution des dépendances via APT)
sudo apt install ./monpaquet_1.0_amd64.deb

# Réinstaller un paquet (utile si les fichiers ont été altérés)
sudo apt reinstall openssh-server

apt remove et apt purge

apt remove supprime les binaires du paquet mais conserve les fichiers de configuration dans /etc. apt purge supprime également les fichiers de configuration — à préférer quand on désinstalle définitivement un service.

# Supprimer un paquet (conserve la configuration)
sudo apt remove apache2

# Supprimer un paquet ET sa configuration
sudo apt purge apache2

# Purger plusieurs paquets d'un coup
sudo apt purge apache2 libapache2-mod-php php-common

Recherche et informations sur les paquets

apt search et apt show

# Rechercher un paquet par nom ou description
apt search "monitoring agent"

# Afficher les informations détaillées d'un paquet
apt show prometheus-node-exporter

# Sortie partielle :
# Package: prometheus-node-exporter
# Version: 1.7.0+ds-1
# Depends: libsystemd0 (>= 244)
# Description: Prometheus exporter for machine metrics

apt list

# Lister les paquets installés
apt list --installed

# Lister les paquets pouvant être mis à jour
apt list --upgradable

# Lister toutes les versions disponibles d'un paquet
apt list -a nginx

apt why et apt why-not (APT 3.x)

Nouvelles commandes introduites avec APT 3, elles permettent de comprendre pourquoi un paquet est installé ou pourquoi il ne peut pas l’être — précieux pour déboguer les conflits de dépendances.

# Pourquoi le paquet 'libssl3' est-il installé ?
apt why libssl3

# Pourquoi 'nodejs' version 22 ne peut-il pas être installé ?
apt why-not nodejs=22.*

Configuration des dépôts : sources.list et format deb822

Format classique /etc/apt/sources.list

# Structure d'une ligne sources.list classique
# deb [options] URI suite composantes
deb https://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb https://security.debian.org/debian-security bookworm-security main
deb https://deb.debian.org/debian bookworm-updates main

Format deb822 (recommandé depuis Ubuntu 24.04 / Debian 13)

Le format deb822 (.sources) remplace progressivement le format classique. Il est plus lisible, supporte plusieurs URI par entrée, et facilite la gestion des clés GPG. C’est le format par défaut sur Ubuntu 24.04 LTS et Debian 13 Trixie.

# /etc/apt/sources.list.d/debian.sources (format deb822)
Types: deb deb-src
URIs: https://deb.debian.org/debian
Suites: bookworm bookworm-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Enabled: yes

Types: deb
URIs: https://security.debian.org/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# Migrer automatiquement les sources.list vers le format deb822 (APT 3.x)
sudo apt modernize-sources

Ajouter un dépôt tiers de façon sécurisée

# Télécharger et stocker la clé GPG du dépôt
curl -fsSL https://exemple.com/repo.gpg | sudo gpg --dearmor -o /usr/share/keyrings/exemple-keyring.gpg

# Créer le fichier source en format deb822
cat <<EOF | sudo tee /etc/apt/sources.list.d/exemple.sources
Types: deb
URIs: https://exemple.com/debian
Suites: stable
Components: main
Signed-By: /usr/share/keyrings/exemple-keyring.gpg
EOF

sudo apt update

Fonctionnalités avancées

Geler la version d’un paquet (apt-mark hold)

Le hold empêche un paquet d’être mis à jour par apt upgrade. Indispensable pour maintenir une version spécifique d’un noyau, d’une base de données ou d’un runtime en production.

# Geler le paquet (ne sera plus mis à jour)
sudo apt-mark hold nginx

# Vérifier les paquets gelés
apt-mark showhold

# Dégeler le paquet
sudo apt-mark unhold nginx

Pinning : contrôler la priorité des dépôts

Le pinning permet d’affiner quelle version d’un paquet est installée lorsqu’il est disponible dans plusieurs dépôts. Les règles se définissent dans /etc/apt/preferences.d/.

# /etc/apt/preferences.d/nginx-pin
# Forcer nginx à venir du dépôt bookworm-backports uniquement
Package: nginx
Pin: release a=bookworm-backports
Pin-Priority: 900

# Bloquer l'installation d'un paquet (priorité négative)
Package: snapd
Pin: release *
Pin-Priority: -1
# Vérifier les priorités effectives d'un paquet
apt-cache policy nginx

Téléchargement sans installation

# Télécharger le .deb sans installer
apt download curl

# Télécharger les sources
apt source nginx

Nettoyage du système

# Supprimer les paquets installés automatiquement devenus orphelins
sudo apt autoremove

# Vider le cache des paquets téléchargés (fichiers .deb dans /var/cache/apt/archives/)
sudo apt clean

# Supprimer uniquement les paquets obsolètes du cache (versions non disponibles)
sudo apt autoclean

# Voir la taille du cache avant nettoyage
du -sh /var/cache/apt/archives/

Attention : apt clean supprime l’intégralité du cache local. Si vous avez besoin de réinstaller des paquets sans accès réseau, conservez le cache ou utilisez autoclean à la place.

Récapitulatif des commandes essentielles

Commande Action
apt update Rafraîchir les listes de paquets
apt upgrade Mettre à jour les paquets (conservateur)
apt full-upgrade Mise à niveau complète (peut installer/supprimer)
apt install pkg Installer un paquet
apt remove pkg Désinstaller (conserve la conf)
apt purge pkg Désinstaller + supprimer la conf
apt search terme Rechercher dans les dépôts
apt show pkg Détails d’un paquet
apt list --installed Lister les paquets installés
apt-mark hold pkg Geler un paquet
apt autoremove Supprimer les orphelins
apt clean Vider le cache local

À lire également

Références

Index complet

Tous les articles (46)

Date Article Tags
17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs