infra / linux-bash
Gestion de paquets (apt/dnf)
Explication
Installer un logiciel "à la main" implique de télécharger le bon binaire, vérifier qu'il est compatible avec ta distribution, puis installer toutes ses dépendances une par une — et refaire ce travail à chaque mise à jour de sécurité. C'est exactement ce qu'un gestionnaire de paquets automatise entièrement, en connaissant les dépendances de chaque logiciel et en vérifiant leur authenticité par signature cryptographique.
Ce que vous allez apprendre
- Comprendre pourquoi APT (Debian/Ubuntu) et DNF (RHEL/Fedora) sont deux écosystèmes distincts
- Toujours rafraîchir les métadonnées (
apt update) avant d'installer ou mettre à jour un paquet - Installer, désinstaller proprement et rechercher un paquet avec les bonnes options
- Retrouver quel paquet fournit un fichier ou un binaire donné (
dpkg -S,dnf provides) - Figer la version d'un paquet critique en production pour éviter une mise à jour surprise
Dans quel contexte ?
Un administrateur système provisionne un nouveau serveur Ubuntu 22.04 pour y installer nginx comme reverse proxy. Avant de faire quoi que ce soit, il doit rafraîchir la liste des paquets disponibles, sinon il risque de recevoir l'erreur "Unable to locate package nginx" alors que le paquet existe bel et bien — simplement, le cache local d'APT ne le connaît pas encore.
Une fois ce principe compris, pourquoi deux outils différents (APT et DNF) ?
Le monde Linux n'est pas unifié : chaque grande famille de distributions a développé son propre format de paquet et son propre outil.
| Famille de distribution | Gestionnaire | Format de paquet | Fichier de config des dépôts |
|---|---|---|---|
| Debian, Ubuntu | APT | .deb | /etc/apt/sources.list |
| RHEL, Fedora, CentOS | DNF (ex-YUM) | .rpm | /etc/yum.repos.d/*.repo |
Ce ne sont pas des standards concurrents par accident : ce sont deux écosystèmes distincts, avec chacun leurs propres dépôts de paquets.
Prérequis
Il faut savoir utiliser sudo pour exécuter une commande avec les droits administrateur — la plupart des commandes de gestion de paquets en ont besoin pour modifier le système.
Avant d'installer quoi que ce soit, une étape est indispensable
Le gestionnaire doit d'abord savoir ce qui existe et quelle est la dernière version disponible. C'est le rôle de la commande de mise à jour des métadonnées (apt update ou dnf check-update).
Cette commande ne modifie rien sur ta machine : elle rafraîchit juste la liste de ce qui est disponible dans les dépôts distants. L'oublier est une source fréquente de confusion, quand on croit qu'un paquet "n'existe pas" alors qu'il existe, simplement pas encore dans le cache local.
Piège fréquent
apt upgrade sur un serveur de production sans avoir lu les changements peut installer une version majeure non testée d'un logiciel critique (PostgreSQL, PHP...) et casser une application du jour au lendemain. Le réflexe à prendre : figer la version d'un paquet sensible avec sudo apt-mark hold nginx avant de lancer un upgrade global.
Maintenant que tu sais installer des logiciels, il devient logique de se demander qui, sur la machine, a le droit de les utiliser ou de les configurer : c'est le sujet de la prochaine leçon, sur les utilisateurs et les groupes.
Commandes & code
Gestion de paquets
# --- Debian / Ubuntu : APT ---
sudo apt update # rafraîchit la liste des paquets disponibles
sudo apt upgrade # met à jour les paquets installés
sudo apt full-upgrade # upgrade + gère les dépendances qui changent
sudo apt install nginx # installe un paquet
sudo apt install nginx=1.24.0-2ubuntu1 # installe une version précise
sudo apt remove nginx # désinstalle (garde la config)
sudo apt purge nginx # désinstalle + supprime la config
sudo apt autoremove # nettoie les dépendances orphelines
apt search "serveur web" # recherche par mot-clé
apt show nginx # infos détaillées sur un paquet
apt list --installed # liste tout ce qui est installé
apt list --upgradable # paquets avec une mise à jour dispo
dpkg -L nginx # liste les fichiers installés par un paquet
dpkg -S /usr/sbin/nginx # trouve quel paquet possède ce fichier
# Dépôts : /etc/apt/sources.list et /etc/apt/sources.list.d/*.list
sudo add-apt-repository ppa:nom/ppa # ajoute un dépôt tiers (PPA)
# --- Red Hat / Fedora / CentOS : DNF (successeur de YUM) ---
sudo dnf check-update # équivalent de apt update
sudo dnf upgrade # met à jour tous les paquets
sudo dnf install nginx # installe
sudo dnf remove nginx # désinstalle
sudo dnf search "web server" # recherche
sudo dnf info nginx # infos détaillées
dnf list installed # paquets installés
dnf provides */nginx # quel paquet fournit ce binaire
sudo dnf history # historique des transactions
sudo dnf history undo <id> # annule une transaction précise
# Paquets applicatifs universels (indépendants de la distro)
sudo snap install code --classic # Snap (Canonical)
flatpak install flathub org.videolan.VLC # Flatpak
# Bonnes pratiques
# - Toujours "update" avant "install/upgrade" pour avoir des métadonnées à jour.
# - Épingler une version critique en prod (apt-mark hold nginx) pour éviter un upgrade surprise.
sudo apt-mark hold nginx # empêche nginx d'être mis à jour par erreur
sudo apt-mark unhold nginx # réautorise les mises à jourRésumé
- APT (Debian/Ubuntu) et DNF (RHEL/Fedora) sont les deux familles de gestionnaires à connaître.
updaterafraîchit les métadonnées,upgrade/installagit réellement sur le système.apt-mark hold/ équivalent DNF : indispensable pour figer une version critique en production.
Exercices pratiques
Mission : provisionner un serveur Ubuntu sans mauvaise surprise
Objectif : Installer et figer un paquet critique en production, puis diagnostiquer un piège classique de mise à jour globale.
Contexte
Tu provisionnes un nouveau serveur Ubuntu 22.04 pour y installer nginx comme reverse proxy. Le serveur vient d'être créé et son cache de paquets est probablement obsolète. L'équipe veut aussi être certaine qu'un apt upgrade futur ne cassera rien de critique.