Linux pour les devs - 18 - Les gestionnaires de paquets

apt, dnf, snap, brew et PPAs : installer, mettre à jour et gerer les logiciels sur Linux.

  1. 01 Linux pour les devs - 00 - Pourquoi Linux meme si tu codes sur Mac ou Windows
  2. 02 Linux pour les devs - 01 - Le terminal, bash et zsh
  3. 03 Linux pour les devs - 02 - Fichiers et répertoires
  4. 04 Linux pour les devs - 03 - Permissions et droits d'acces
  5. 05 Linux pour les devs - 04 - Utilisateurs, groupes et sudo
  6. 06 Linux pour les devs - 05 - nano, vim, sed et awk
  7. 07 Linux pour les devs - 06 - Pipes et redirections
  8. 08 Linux pour les devs - 07 - grep et find en profondeur
  9. 09 Linux pour les devs - 08 - Les processus : comprendre ce qui tourne sur ta machine
  10. 10 Linux pour les devs - 09 - systemd : gerer tes services comme un pro
  11. 11 Linux pour les devs - 10 - Le réseau : comprendre ce qui passe par le fil
  12. 12 Linux pour les devs - 11 - Le firewall : contrôler qui entre et qui sort
  13. 13 Linux pour les devs - 12 - SSH : l'acces distant sécurisé
  14. 14 Linux pour les devs - 13 - Les variables d'environnement : configurer sans hardcoder
  15. 15 Linux pour les devs - 14 - Scripts bash : automatiser pour ne plus se répéter
  16. 16 Linux pour les devs - 15 - cron : les taches planifiees
  17. 17 Linux pour les devs - 16 - Les logs : lire, filtrer, comprendre
  18. 18 Linux pour les devs - 17 - Stockage et disques
  19. 19 Linux pour les devs - 18 - Les gestionnaires de paquets
  20. 20 Linux pour les devs - 19 - Les conteneurs sans Docker
  21. 21 Linux pour les devs - 20 - Securiser un serveur Linux
  22. 22 Linux pour les devs - 21 - Performance et diagnostic
  23. 23 Linux pour les devs - 22 - tmux : le multiplexeur de terminal
  24. 24 Linux pour les devs - 23 - Glossaire Linux

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 update avant chaque installation, apt upgrade pour les mises à jour
  • apt search et apt show pour explorer les paquets disponibles
  • Limite les dépôts tiers au strict nécessaire
  • apt-mark hold pour bloquer un paquet critique en production
  • unattended-upgrades pour 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

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.