18 - Les gestionnaires de paquets
Ce que tu vas apprendre
- Utiliser apt pour installer, mettre à jour et supprimer des paquets
- Connaitre dnf pour les distributions Red Hat
- Gerer les PPAs et les dépôts tiers
- Epingler des versions avec apt pinning
- Configurer les mises à jour automatiques avec unattended-upgrades
- Connaitre snap et brew sur Linux
Prerequisites
Savoir utiliser sudo et comprendre le système de fichiers.
J'ai longtemps installe des logiciels sur Linux en compilant depuis les sources. Je telechargais le tarball, je faisais ./configure && make && make install, et trois mois plus tard j'avais oublie ce que j'avais installe et ou. Le gestionnaire de paquets resout ce problème. Il sait ce qui est installe, il gere les dépendances, et il sait tout desinstaller proprement.
apt : le gestionnaire de Debian et Ubuntu
apt est le gestionnaire de paquets que tu rencontreras le plus souvent sur les serveurs :
bash# Mettre a jour la liste des paquets disponibles
sudo apt update
# Mettre a jour tous les paquets installes
sudo apt upgrade
# Mettre a jour avec gestion des nouvelles dependances
sudo apt full-upgrade
# Installer un paquet
sudo apt install nginx
# Installer plusieurs paquets
sudo apt install nginx postgresql redis
# Installer une version specifique
sudo apt install nginx=1.24.0-1ubuntu1
# Supprimer un paquet (garde la config)
sudo apt remove nginx
# Supprimer un paquet et sa configuration
sudo apt purge nginx
# Supprimer les dependances orphelines
sudo apt autoremove
Chercher des paquets
bash# Chercher par nom
apt search nginx
# Afficher les details d'un paquet
apt show nginx
# Voir les versions disponibles
apt list -a nginx
# Lister les paquets installes
apt list --installed
# Lister les paquets avec des mises a jour disponibles
apt list --upgradable
Le cache apt
bash# Voir la taille du cache
du -sh /var/cache/apt/archives
# Nettoyer les .deb telecharges
sudo apt clean
# Nettoyer seulement les vieilles versions
sudo apt autoclean
dnf : le gestionnaire de Red Hat, Fedora, CentOS
Si tu travailles sur des serveurs RHEL ou CentOS, tu utiliseras dnf (anciennement yum) :
bash# Mettre a jour
sudo dnf update
# Installer
sudo dnf install nginx
# Supprimer
sudo dnf remove nginx
# Chercher
dnf search nginx
# Informations
dnf info nginx
# Lister les paquets installes
dnf list installed
# Nettoyer le cache
sudo dnf clean all
La syntaxe est proche de apt. Si tu connais l'un, tu t'adaptes a l'autre en cinq minutes.
Les PPAs et dépôts tiers
Les dépôts officiels ne contiennent pas tout. Parfois tu as besoin d'une version plus recente ou d'un logiciel tiers :
bash# Ajouter un PPA (Ubuntu)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12
# Ajouter un depot avec une cle GPG (methode moderne)
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | \
sudo gpg --dearmor -o /usr/share/keyrings/nodesource.gpg
echo "deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | \
sudo tee /etc/apt/sources.list.d/nodesource.list
sudo apt update
sudo apt install nodejs
Sur paltemps.fr, j'ajoute le minimum de dépôts tiers. Chaque dépôt supplementaire est un risque : s'il disparaît ou se fait compromettre, ca peut casser tes mises à jour ou pire.
Epingler des versions
En production, tu ne veux pas qu'un apt upgrade casse tout en mettant à jour un paquet critique :
bash# Bloquer un paquet a sa version actuelle
sudo apt-mark hold nginx
# Voir les paquets bloques
apt-mark showhold
# Debloquer
sudo apt-mark unhold nginx
Pour un contrôle plus fin, utilise le fichier de préférences :
# /etc/apt/preferences.d/pin-nginx
Package: nginx
Pin: version 1.24.0*
Pin-Priority: 1001
La priorité 1001 empeche toute mise à jour du paquet, meme avec full-upgrade.
unattended-upgrades : mises à jour automatiques
Sur un serveur, tu veux que les correctifs de sécurité s'installent automatiquement :
bash# Installer
sudo apt install unattended-upgrades
# Activer
sudo dpkg-reconfigure -plow unattended-upgrades
Configuration dans /etc/apt/apt.conf.d/50unattended-upgrades :
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
// Redemarrage automatique si necessaire
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
// Notification par mail
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "only-on-error";
Je limite aux mises à jour de sécurité. Les mises à jour fonctionnelles, je préféré les faire manuellement apres avoir vérifié le changelog.
snap : les paquets universels
snap installe des applications empaquetees avec toutes leurs dépendances :
bash# Installer
sudo snap install code --classic
# Lister les snaps installes
snap list
# Mettre a jour
sudo snap refresh
# Supprimer
sudo snap remove code
Mon avis sur snap : c'est pratique pour les applications desktop (VS Code, Firefox, etc.), mais pour les serveurs, je reste sur apt. Les snaps sont plus lourds, demarrent plus lentement, et ajoutent des montages loop qui polluent la sortie de df et mount.
brew sur Linux (Linuxbrew)
Homebrew fonctionne aussi sur Linux. C'est utile pour installer des outils recents sans toucher aux paquets système :
bash# Installer Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Installer un outil
brew install ripgrep
brew install fd
brew install bat
# Mettre a jour
brew update && brew upgrade
Je l'utilise sur mes machines de dev pour avoir des versions recentes d'outils CLI sans dépendre des dépôts de la distribution.
Résumé
apt updateavant chaque installation,apt upgradepour les mises à jourapt searchetapt showpour explorer les paquets disponibles- Limite les dépôts tiers au strict nécessaire
apt-mark holdpour bloquer un paquet critique en productionunattended-upgradespour les correctifs de sécurité automatiques- snap pour les apps desktop, apt pour les serveurs
- brew sur Linux pour les outils CLI recents sur un poste de dev
Article précédent : Le stockage et les disques Article suivant : Les conteneurs sans Docker