APT & Package Management
Gestion des paquets sur Debian, Ubuntu et dérivés.
Le Cycle de Vie APT
Les 3 Ătapes
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â CYCLE DE MISE Ă JOUR â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â 1. UPDATE 2. UPGRADE 3. FULL-UPGRADE â
â âââââââââââââ âââââââââââââ âââââââââââââ â
â RafraĂźchir Mettre Ă jour Mise Ă jour â
â le cache les paquets intelligente â
â (mĂ©tadonnĂ©es) (conservateur) (+ dĂ©pendances) â
â â
â apt update â apt upgrade â apt full-upgrade â
â â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
| Commande | Action | Risque |
|---|---|---|
apt update |
Télécharge la liste des paquets disponibles | Aucun |
apt upgrade |
Met Ă jour les paquets, ne supprime rien | Faible |
apt full-upgrade |
Met Ă jour + peut supprimer des paquets obsolĂštes | Moyen |
apt dist-upgrade |
Alias de full-upgrade (ancien nom) | Moyen |
# Workflow standard
sudo apt update && sudo apt upgrade -y
# Mise Ă jour complĂšte (nouveau kernel, etc.)
sudo apt update && sudo apt full-upgrade -y
apt vs apt-get
apt |
apt-get |
|---|---|
| Interface moderne | Interface classique |
| Barre de progression | Output brut |
| Couleurs | Pas de couleurs |
| Recommandé pour l'interactif | Recommandé pour les scripts |
# Interactif (humain)
apt search nginx
apt install nginx
# Scripts (non-interactif, stable)
apt-get update
apt-get install -y nginx
Dans les scripts, utilisez apt-get
L'interface de apt peut changer entre versions.
apt-get est garanti stable pour l'automatisation.
Commandes de Survie
Rechercher des Paquets
# Rechercher par nom ou description
apt search nginx
apt search "web server"
# Informations détaillées sur un paquet
apt show nginx
# Version disponible vs installée
apt policy nginx
# Lister les fichiers d'un paquet (avant install)
apt-file list nginx
# Installer apt-file si nécessaire
sudo apt install apt-file
sudo apt-file update
Installer / Supprimer
# Installer
sudo apt install nginx
sudo apt install nginx php-fpm mariadb-server # Plusieurs paquets
# Installer sans confirmation
sudo apt install -y nginx
# Installer une version spécifique
sudo apt install nginx=1.18.0-0ubuntu1
# Réinstaller (réparer)
sudo apt install --reinstall nginx
# Supprimer (garde la config)
sudo apt remove nginx
# Supprimer complĂštement (config incluse)
sudo apt purge nginx
# Supprimer + dépendances orphelines
sudo apt purge nginx && sudo apt autoremove -y
Nettoyer
# Supprimer les paquets orphelins (plus nécessaires)
sudo apt autoremove -y
# Vider le cache des .deb téléchargés
sudo apt clean
# Vider uniquement les anciennes versions
sudo apt autoclean
# Espace utilisé par le cache
du -sh /var/cache/apt/archives/
Lister les Paquets
# Tous les paquets installés
apt list --installed
# Paquets avec mise Ă jour disponible
apt list --upgradable
# Filtrer par pattern
apt list --installed | grep nginx
# Compter les paquets installés
apt list --installed 2>/dev/null | wc -l
Trouver un Paquet par Fichier
# Quel paquet a installé ce fichier ?
dpkg -S /bin/ls
# Output: coreutils: /bin/ls
dpkg -S /usr/bin/curl
# Output: curl: /usr/bin/curl
# Chercher dans tous les paquets (mĂȘme non installĂ©s)
apt-file search /bin/netstat
# Output: net-tools: /bin/netstat
Informations sur un Paquet Installé
# Status d'un paquet
dpkg -s nginx
# Fichiers installés par un paquet
dpkg -L nginx
# Liste des paquets installés (dpkg)
dpkg -l
dpkg -l | grep nginx
Gestion des Sources (Repositories)
Fichiers de Configuration
| Fichier/Dossier | Usage |
|---|---|
/etc/apt/sources.list |
Sources principales (distro) |
/etc/apt/sources.list.d/ |
Sources additionnelles (un fichier par repo) |
/etc/apt/keyrings/ |
Clés GPG des repos (méthode moderne) |
Format d'une Ligne
Exemple :
# Format standard
deb http://deb.debian.org/debian bookworm main contrib non-free
# Avec architecture spécifique
deb [arch=amd64] http://deb.debian.org/debian bookworm main
# Avec clé GPG (méthode moderne)
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable
| ĂlĂ©ment | Description |
|---|---|
deb |
Paquets binaires (deb-src = sources) |
[arch=amd64] |
Architecture (optionnel) |
[signed-by=...] |
Chemin vers la clé GPG |
| URL | Adresse du dépÎt |
| Distribution | bookworm, jammy, stable, etc. |
| Composants | main, contrib, non-free, universe |
Ajouter un DépÎt Tiers (Méthode Moderne)
Méthode Propre vs add-apt-repository
add-apt-repository est pratique mais opaque.
La méthode manuelle est plus transparente et recommandée en production.
Exemple : Ajouter le dépÎt Docker
# 1. Installer les prérequis
sudo apt install -y ca-certificates curl gnupg
# 2. Créer le dossier pour les clés
sudo install -m 0755 -d /etc/apt/keyrings
# 3. Télécharger et convertir la clé GPG
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 4. Ajuster les permissions
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 5. Ajouter le dépÎt (fichier séparé)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 6. Mettre Ă jour et installer
sudo apt update
sudo apt install docker-ce
Structure résultante :
/etc/apt/
âââ sources.list # Sources distro
âââ sources.list.d/
â âââ docker.list # Source Docker
âââ keyrings/
âââ docker.gpg # ClĂ© GPG Docker
Supprimer un DépÎt
# Supprimer le fichier de source
sudo rm /etc/apt/sources.list.d/docker.list
# Supprimer la clé GPG
sudo rm /etc/apt/keyrings/docker.gpg
# RafraĂźchir
sudo apt update
DépÎts Ubuntu vs Debian
Ubuntu :
# /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
| Composant | Contenu |
|---|---|
main |
Logiciels libres supportés par Canonical |
restricted |
Drivers propriétaires |
universe |
Logiciels libres maintenus par la communauté |
multiverse |
Logiciels non-libres |
Debian :
# /etc/apt/sources.list
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free
deb http://security.debian.org/debian-security bookworm-security main contrib non-free
| Composant | Contenu |
|---|---|
main |
Logiciels 100% libres (DFSG) |
contrib |
Libres mais dépendent de non-libres |
non-free |
Logiciels non-libres |
non-free-firmware |
Firmwares propriétaires (Debian 12+) |
Logs & Historique
Fichiers de Logs
| Fichier | Contenu |
|---|---|
/var/log/apt/history.log |
Historique APT (lisible) |
/var/log/apt/term.log |
Output terminal des opérations |
/var/log/dpkg.log |
Log bas niveau dpkg |
Consulter l'Historique
# DerniÚres opérations APT
cat /var/log/apt/history.log | tail -50
# Chercher une date spécifique
grep "2024-01-15" /var/log/apt/history.log
# Voir les upgrades récents
grep "Upgrade:" /var/log/apt/history.log | tail -10
# Historique dpkg (plus détaillé)
grep " install " /var/log/dpkg.log | tail -20
grep " upgrade " /var/log/dpkg.log | tail -20
grep " remove " /var/log/dpkg.log | tail -20
Exemple de Log APT
Start-Date: 2024-01-15 10:30:00
Commandline: apt upgrade -y
Requested-By: admin (1000)
Upgrade: nginx:amd64 (1.18.0-0ubuntu1, 1.18.0-0ubuntu2)
End-Date: 2024-01-15 10:31:15
AprĂšs une mise Ă jour qui casse le systĂšme
Gestion des Versions
Bloquer/Débloquer un Paquet
# EmpĂȘcher la mise Ă jour (hold)
sudo apt-mark hold nginx
sudo apt-mark hold linux-image-generic
# Lister les paquets bloqués
apt-mark showhold
# Débloquer
sudo apt-mark unhold nginx
Installer une Version Spécifique
# Lister les versions disponibles
apt policy nginx
apt-cache madison nginx
# Installer une version précise
sudo apt install nginx=1.18.0-0ubuntu1
# Depuis un dépÎt spécifique (priorité)
sudo apt install -t bookworm-backports nginx
Référence Rapide
# Mise Ă jour
sudo apt update # RafraĂźchir cache
sudo apt upgrade -y # Mettre Ă jour
sudo apt full-upgrade -y # Mise Ă jour complĂšte
# Recherche
apt search nginx # Chercher
apt show nginx # Détails
apt policy nginx # Versions
# Installation
sudo apt install nginx # Installer
sudo apt remove nginx # Supprimer
sudo apt purge nginx # Supprimer + config
# Nettoyage
sudo apt autoremove -y # Orphelins
sudo apt clean # Cache
# Infos
apt list --installed # Paquets installés
dpkg -S /path/to/file # Quel paquet ?
dpkg -L package # Fichiers d'un paquet
# Versions
sudo apt-mark hold package # Bloquer
sudo apt-mark unhold package # Débloquer
# Logs
cat /var/log/apt/history.log # Historique
cat /var/log/dpkg.log # Détails