15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
09.10.2024

apt vs yum : Gestion des paquets Linux expliquée pour les administrateurs système

La gestion des paquets Linux est le mécanisme par lequel les logiciels sont installés, mis à jour, configurés et supprimés sur un système Linux. apt (Advanced Package Tool) gère les paquets `.deb` sur les distributions basées sur Debian telles qu’Ubuntu et Linux Mint, tandis que yum (Yellowdog Updater Modified) gère les paquets `.rpm` sur les systèmes basés sur Red Hat, notamment CentOS et RHEL. Les deux outils abstraient la complexité de la résolution des dépendances, de l’interaction avec les dépôts et de la vérification de l’intégrité des paquets — mais ils sont architecturalement distincts et non interchangeables.

Savoir quel outil gère votre système n’est pas une connaissance facultative. Cela affecte directement la façon dont vous provisionnez les serveurs, automatisez les déploiements, écrivez des scripts de gestion de configuration (Ansible, Chef, Puppet) et maintenez les cycles de correctifs de sécurité dans les environnements de production.

Qu’est-ce qu’un gestionnaire de paquets Linux

Un gestionnaire de paquets est un ensemble d’outils logiciels qui automatise le cycle de vie complet des logiciels sur un système Linux : récupération des paquets depuis des dépôts distants, vérification des signatures cryptographiques, résolution et installation des chaînes de dépendances, exécution des scripts pré/post-installation et enregistrement de l’installation dans une base de données locale de paquets.

La base de données des paquets est critique et souvent négligée. Sur les systèmes basés sur Debian, elle se trouve à `/var/lib/dpkg/`. Sur les systèmes basés sur RPM, elle réside dans `/var/lib/rpm/`. Les deux bases de données maintiennent l’enregistrement faisant autorité de ce qui est installé, à quelle version et avec quelle propriété de fichier — ce qui en fait la colonne vertébrale des opérations d’audit système et de restauration.

Les gestionnaires de paquets interagissent avec des dépôts — des serveurs distants hébergeant des collections organisées de paquets compilés et signés. Les métadonnées du dépôt (listes de paquets, sommes de contrôle, clés GPG) sont synchronisées localement avant toute installation, c’est pourquoi `apt update` ou `yum check-update` doit précéder les commandes d’installation dans les scripts automatisés.

apt : Advanced Package Tool pour les systèmes basés sur Debian

apt est l’interface en ligne de commande de haut niveau pour la gestion des paquets sur Debian, Ubuntu, Linux Mint, Pop!_OS et tous leurs dérivés. Il fonctionne au-dessus de l’outil de bas niveau `dpkg`, qui gère l’installation réelle des paquets `.deb`. Considérez `dpkg` comme le moteur et `apt` comme le conducteur intelligent qui sait où trouver le carburant et dans quel ordre le brûler.

La chaîne d’outils apt en profondeur

L’écosystème apt comprend plusieurs binaires qui servent des objectifs distincts :

  • `apt` — l’interface CLI interactive moderne et recommandée (introduite dans Ubuntu 14.04 / Debian 8)
  • `apt-get` — le backend plus ancien et scriptable ; préféré dans les scripts shell en raison de son format de sortie stable
  • `apt-cache` — interroge le cache local des paquets pour les métadonnées, les descriptions et les graphes de dépendances
  • `dpkg` — l’installateur de paquets de bas niveau ; utilisé directement lors de l’installation d’un fichier `.deb` local avec `dpkg -i package.deb`
  • `apt-mark` — marque les paquets comme retenus, installés automatiquement ou installés manuellement

Commandes apt essentielles avec contexte technique

Mettre à jour l’index local des paquets :

“`bash

sudo apt update

“`

Cela récupère les métadonnées mises à jour de tous les dépôts configurés dans `/etc/apt/sources.list` et `/etc/apt/sources.list.d/`. Cela n’installe ni ne met à niveau quoi que ce soit. L’exécution de cette commande avant toute opération d’installation est obligatoire — l’ignorer signifie que vous pourriez résoudre vers des versions de paquets obsolètes ou manquer des correctifs de sécurité.

Mettre à niveau les paquets installés :

“`bash

sudo apt upgrade

“`

Met à niveau tous les paquets pour lesquels une version plus récente existe, mais ne supprimera aucun paquet actuellement installé ni n’installera un nouveau paquet pour satisfaire une dépendance. Pour une mise à niveau plus agressive qui gère les changements de dépendances :

“`bash

sudo apt full-upgrade

“`

`full-upgrade` (anciennement `dist-upgrade`) installera de nouvelles dépendances et supprimera les paquets conflictuels si nécessaire. Utilisez-le avec précaution sur les systèmes de production.

Installer un paquet :

“`bash

sudo apt install package_name

“`

Pour installer plusieurs paquets en une seule transaction :

“`bash

sudo apt install nginx curl git

“`

Combiner les installations en une seule commande est plus efficace car apt résout le graphe de dépendances complet une seule fois plutôt que de manière répétée.

Supprimer un paquet (conserver les fichiers de configuration) :

“`bash

sudo apt remove package_name

“`

Purger un paquet (supprimer les binaires et les fichiers de configuration) :

“`bash

sudo apt purge package_name

“`

Préférez toujours `purge` à `remove` lors de la mise hors service d’un service. Les fichiers de configuration résiduels de `remove` peuvent provoquer un comportement inattendu si le paquet est réinstallé ultérieurement.

Supprimer les dépendances orphelines :

“`bash

sudo apt autoremove

“`

Cela est fréquemment négligé et entraîne une accumulation de dépendances au fil du temps. Intégrez-le dans votre flux de travail de maintenance régulier.

Rechercher un paquet :

“`bash

apt search package_name

“`

Inspecter les détails d’un paquet avant l’installation :

“`bash

apt show package_name

“`

Cela révèle la version du paquet, la taille installée, les dépendances et le mainteneur — utile avant d’intégrer un paquet inconnu.

Retenir un paquet à sa version actuelle (critique pour la stabilité en production) :

“`bash

sudo apt-mark hold package_name

“`

Cela empêche `apt upgrade` de toucher au paquet. Indispensable lorsque vous utilisez une version spécifique du noyau ou une version d’application épinglée.

Cas d’utilisation apt concret : Provisionnement d’un serveur web sur Ubuntu

“`bash

sudo apt update

sudo apt install -y nginx certbot python3-certbot-nginx

sudo systemctl enable nginx

sudo systemctl start nginx

“`

Le flag `-y` supprime l’invite de confirmation, ce qui est requis pour les scripts de provisionnement non interactifs. Associez-le toujours à `apt update` dans le même bloc de script pour garantir que vous installez à partir des métadonnées de dépôt actuelles.

yum : Yellowdog Updater Modified pour les systèmes basés sur RPM

yum est le gestionnaire de paquets pour Red Hat Enterprise Linux (RHEL), CentOS 7 et les anciennes versions de Fedora. Il gère les paquets `.rpm` et s’appuie sur la base de données RPM. Comme apt au-dessus de dpkg, yum fournit la résolution des dépendances et la gestion des dépôts au-dessus de la commande brute `rpm`.

Note architecturale critique : Sur CentOS 8+, RHEL 8+ et toutes les versions modernes de Fedora, yum a été remplacé par dnf (Dandified YUM). Sur ces systèmes, la commande `yum` est généralement un lien symbolique ou un alias vers `dnf`. Si vous gérez un système exécutant RHEL/CentOS 8 ou une version ultérieure, vous devriez écrire des commandes `dnf`. La syntaxe des commandes est largement compatible, mais dnf offre une résolution des dépendances significativement meilleure, une API plus propre et une prise en charge des dépôts modulaires.

Commandes yum essentielles avec contexte technique

Vérifier les mises à jour disponibles sans les appliquer :

“`bash

sudo yum check-update

“`

Cela est particulièrement utile dans les scripts de surveillance automatisés pour détecter si un système est en retard sur les correctifs sans déclencher une mise à niveau.

Appliquer toutes les mises à jour disponibles :

“`bash

sudo yum update

“`

Contrairement à `apt upgrade`, `yum update` installera également de nouveaux paquets de dépendances si nécessaire. Il n’existe pas d’équivalent séparé à `full-upgrade` — yum gère cela par défaut.

Installer un paquet :

“`bash

sudo yum install package_name

“`

Supprimer un paquet :

“`bash

sudo yum remove package_name

“`

Remarque : l’opération de suppression de yum peut parfois se propager et supprimer des paquets dépendants. Examinez toujours le résumé de la transaction avant de confirmer.

Rechercher un paquet :

“`bash

yum search package_name

“`

Inspecter les informations d’un paquet :

“`bash

yum info package_name

“`

Lister les paquets installés :

“`bash

yum list installed

“`

Nettoyer le cache local :

“`bash

sudo yum clean all

“`

Efface les données de paquets et les métadonnées en cache. Exécutez cette commande lorsque vous suspectez que des données de dépôt obsolètes causent des échecs de résolution.

Retenir un paquet à sa version actuelle :

“`bash

sudo yum versionlock add package_name

“`

Nécessite le plugin `yum-plugin-versionlock`. L’équivalent de `apt-mark hold`, cela est essentiel pour maintenir des environnements de production stables où une version spécifique d’un paquet ne doit pas être modifiée par les mises à jour automatiques.

Cas d’utilisation yum concret : Déploiement d’Apache sur CentOS 7

“`bash

sudo yum install -y httpd

sudo systemctl enable httpd

sudo systemctl start httpd

sudo firewall-cmd –permanent –add-service=http

sudo firewall-cmd –reload

“`

Une erreur courante est d’installer Apache en oubliant d’ouvrir le pare-feu. Sur les systèmes CentOS/RHEL, `firewalld` est actif par défaut et bloquera silencieusement le trafic HTTP même si le service est en cours d’exécution.

apt vs yum : Comparaison directe

Fonctionnalitéapt (Debian/Ubuntu)yum / dnf (RHEL/CentOS/Fedora)
Format de paquet`.deb``.rpm`
Outil sous-jacent`dpkg``rpm`
Distributions principalesDebian, Ubuntu, Mint, Pop!_OSRHEL, CentOS, Fedora, AlmaLinux, Rocky Linux
Successeur / CLI moderne`apt` (a remplacé `apt-get` pour l’usage interactif)`dnf` (a remplacé `yum` sur RHEL 8+)
Résolution des dépendancesAutomatique, gère les conflitsAutomatique ; dnf est plus robuste que yum
Configuration des dépôts`/etc/apt/sources.list`, `/etc/apt/sources.list.d/``/etc/yum.repos.d/*.repo`
Mécanisme de rétention de paquet`apt-mark hold``yum versionlock` (plugin requis)
Installation de paquet local`dpkg -i file.deb``rpm -i file.rpm` ou `yum localinstall`
Gestion du cache`apt clean`, `apt autoclean``yum clean all`
Suppression des orphelins`apt autoremove``yum autoremove` (dnf gère cela mieux)
Historique des transactionsLimitéHistorique complet des transactions avec restauration via `yum history`
Flux de modulesNon pris en charge nativementPris en charge dans dnf (Application Streams)
Vérification des signatures GPGOuiOui
Flag adapté aux scripts`-y` (non interactif)`-y` (non interactif)

dnf : Le successeur moderne de yum

Si vous gérez un système RHEL 8+, CentOS Stream, AlmaLinux, Rocky Linux ou Fedora, dnf est votre gestionnaire de paquets. La transition de yum vers dnf n’est pas cosmétique — dnf résout un certain nombre de problèmes architecturaux de longue date dans yum :

  • Résolution des dépendances : dnf utilise la bibliothèque `libsolv`, qui est significativement plus rapide et plus précise que le résolveur de yum
  • Stabilité de l’API : dnf expose une API Python stable pour les scripts et l’automatisation
  • Flux de modules : dnf prend en charge les Application Streams, permettant à plusieurs versions du même logiciel (par exemple, PHP 7.4 et PHP 8.1) de coexister dans les dépôts
  • Restauration de transaction : `dnf history undo <id>` vous permet de restaurer une transaction spécifique — une capacité sans équivalent direct dans apt

Commandes dnf clés qui diffèrent de yum :

“`bash

Install a module stream (e.g., PHP 8.1)

sudo dnf module enable php:8.1

sudo dnf install php

Roll back the last transaction

sudo dnf history undo last

Check which package provides a specific file

sudo dnf provides /usr/bin/python3

“`

Gestion des dépôts : Une compétence opérationnelle critique

apt et yum/dnf ne sont utiles qu’en fonction des dépôts qu’ils sont configurés pour utiliser. Les dépôts mal configurés ou non fiables représentent un risque de sécurité significatif.

Sur Debian/Ubuntu, ajoutez un dépôt tiers en toute sécurité :

“`bash

Import the GPG key

curl -fsSL https://example.com/gpg.key | sudo gpg –dearmor -o /usr/share/keyrings/example-archive-keyring.gpg

Add the repository with key reference

echo "deb [signed-by=/usr/share/keyrings/example-archive-keyring.gpg] https://repo.example.com/apt stable main" | sudo tee /etc/apt/sources.list.d/example.list

sudo apt update

“`

Sur RHEL/CentOS, ajoutez un dépôt :

“`bash

sudo yum-config-manager –add-repo https://repo.example.com/centos/example.repo

Or manually create /etc/yum.repos.d/example.repo

“`

Principe de sécurité : N’ajoutez jamais un dépôt sans vérifier sa clé GPG de manière indépendante. Un dépôt compromis peut pousser des paquets malveillants qui seront installés avec les privilèges root.

Choisir le bon gestionnaire de paquets pour votre environnement serveur

Le gestionnaire de paquets que vous utilisez est dicté par votre distribution Linux — vous ne choisissez pas apt ou yum indépendamment. Ce que vous choisissez, c’est votre distribution, et cette décision a des conséquences en aval sur la disponibilité des paquets, les contrats de support entreprise, la cadence des correctifs de sécurité et la compatibilité des outils.

  • Ubuntu LTS (apt) : Meilleur choix pour les charges de travail VPS Hosting à usage général, les serveurs web et les environnements de développement. Les versions à support long terme reçoivent 5 ans de mises à jour de sécurité, extensibles à 10 avec Ubuntu Pro.
  • RHEL / AlmaLinux / Rocky Linux (dnf) : La norme pour les environnements de production en entreprise, en particulier lors de l’exécution sur des Serveurs Dédiés nécessitant des piles logicielles certifiées, des cadres de conformité (PCI-DSS, HIPAA) ou des déploiements d’applications supportés par des ISV.
  • Debian Stable (apt) : Versions de paquets extrêmement conservatrices, ce qui le rend idéal pour les serveurs où la stabilité est prioritaire par rapport aux logiciels de pointe. Couramment utilisé pour les serveurs de bases de données et de messagerie à longue durée de vie.
  • CentOS Stream / Fedora (dnf) : Adapté aux environnements de développement et de staging où vous souhaitez suivre les changements RHEL en amont avant qu’ils n’arrivent dans les versions stables.

Lors du déploiement d’un panneau de contrôle comme cPanel, le gestionnaire de paquets sous-jacent est très important. cPanel prend officiellement en charge AlmaLinux, Rocky Linux et CloudLinux — tous basés sur dnf. Si vous utilisez un VPS avec cPanel, vous travaillerez dans un environnement dnf sur les déploiements modernes.

Pour les environnements où vous avez besoin d’une interface graphique ou web pour gérer les paquets et la configuration du serveur sans passer par la ligne de commande, explorez les Panneaux de contrôle VPS qui abstraient la gestion des paquets dans une interface utilisateur tout en s’appuyant sur apt ou dnf en arrière-plan.

Durcissement de la sécurité via la gestion des paquets

Les gestionnaires de paquets constituent une surface d’attaque principale pour les attaques de la chaîne d’approvisionnement. Ces pratiques sont non négociables sur tout serveur exposé à Internet :

  • Activer les mises à jour de sécurité automatiques — Sur Ubuntu : paquet `unattended-upgrades`. Sur RHEL/CentOS : `dnf-automatic` avec `apply_updates = yes` dans `/etc/dnf/automatic.conf`.
  • Vérifier les signatures GPG — Ne désactivez jamais la vérification GPG (`–nogpgcheck` dans yum/dnf ou `–allow-unauthenticated` dans apt) en dehors des environnements de laboratoire isolés.
  • Auditer régulièrement les paquets installés — Utilisez `dpkg -l` ou `rpm -qa` pour générer un manifeste complet des paquets. Comparez-le à une référence connue comme bonne.
  • Supprimer les paquets inutiles — Chaque paquet installé est une surface d’attaque. Exécutez `apt autoremove` ou `dnf autoremove` après les déploiements majeurs.
  • Épingler les paquets critiques — Utilisez `apt-mark hold` ou `dnf versionlock` pour empêcher les mises à niveau non intentionnelles de paquets tels que le noyau, OpenSSL ou les moteurs de bases de données sur les systèmes de production.

Si vous exploitez un serveur de messagerie ou hébergez une infrastructure email, maintenir à jour des paquets comme Postfix, Dovecot et leurs dépendances TLS est particulièrement critique. Associez une gestion rigoureuse des paquets à des Certificats SSL correctement configurés pour maintenir la sécurité du transport chiffré. De même, les environnements d’hébergement web gérés via des plateformes d’Hébergement Web Mutualisé bénéficient du fait que le fournisseur d’hébergement maintient la sécurité des paquets sous-jacents, mais comprendre la couche des paquets reste précieux pour le débogage et la configuration personnalisée.

Matrice de décision pratique et points clés à retenir

Avant d’exécuter une commande de gestion de paquets sur un système de production, parcourez cette liste de contrôle :

Liste de contrôle pré-opération :

  • Confirmez la distribution et la version que vous utilisez : `cat /etc/os-release`
  • Confirmez le gestionnaire de paquets correct : `which apt` ou `which dnf` ou `which yum`
  • Sur les systèmes apt : exécutez toujours `sudo apt update` avant `apt install` ou `apt upgrade`
  • Sur les systèmes yum/dnf : `sudo yum check-update` ou `sudo dnf check-update` avant les mises à niveau
  • Examinez le résumé de la transaction avant de confirmer toute opération d’installation ou de suppression
  • Pour les serveurs de production : testez d’abord les mises à niveau de paquets dans un environnement de staging
  • Après les mises à niveau majeures : vérifiez l’état des services avec `systemctl status <service>`
  • Après la suppression de paquets : exécutez `apt autoremove` ou `dnf autoremove` pour nettoyer les orphelins

Décisions architecturales :

  • Utilisez `apt full-upgrade` à la place de `apt upgrade` uniquement lorsque vous comprenez et acceptez que des paquets peuvent être supprimés
  • Utilisez `dnf` à la place de `yum` sur tout système exécutant RHEL 8 / CentOS 8 ou une version ultérieure
  • Utilisez `apt-get` (et non `apt`) dans les scripts shell et les pipelines CI/CD pour une sortie stable et analysable
  • Utilisez `yum versionlock` ou `apt-mark hold` avant que tout pipeline de mise à jour automatisé ne touche un serveur de production
  • N’ajoutez jamais de dépôts tiers sans importer et vérifier leurs clés GPG

FAQ

Quelle est la différence entre apt et apt-get ?

`apt` est la commande moderne orientée utilisateur introduite pour consolider `apt-get` et `apt-cache` en un seul outil avec une sortie plus propre et une barre de progression. `apt-get` reste disponible et est préféré dans les scripts car son format de sortie est garanti stable entre les versions. Pour une utilisation interactive en terminal, `apt` est la norme actuelle.

Puis-je utiliser apt sur un serveur CentOS ou RHEL ?

Non. apt est exclusivement destiné aux systèmes basés sur Debian et gère les paquets `.deb`. CentOS et RHEL utilisent le format de paquet RPM, géré par yum ou dnf. Les formats de paquets et les bases de données sont architecturalement incompatibles — il n’existe pas de couche de conversion.

Quel est l’équivalent yum de apt autoremove ?

`sudo yum autoremove` ou `sudo dnf autoremove` supprime les paquets qui ont été installés comme dépendances mais qui ne sont plus requis par aucun paquet explicitement installé. L’implémentation dnf est plus fiable que la version yum héritée.

Comment empêcher un paquet spécifique d’être mis à niveau par apt ou yum ?

Sur les systèmes basés sur apt : `sudo apt-mark hold package_name`. Sur les systèmes yum/dnf : installez le plugin `yum-plugin-versionlock` et exécutez `sudo yum versionlock add package_name`, ou sur dnf : `sudo dnf versionlock add package_name`. Les deux mécanismes survivent aux commandes `upgrade` et `update` jusqu’à ce qu’ils soient explicitement libérés.

yum est-il encore pertinent en 2024 ?

Pour les systèmes CentOS 7 et RHEL 7 encore en production, oui — yum reste le gestionnaire de paquets. Cependant, CentOS 7 a atteint sa fin de vie en juin 2024. Tout système fonctionnant encore sous CentOS 7 devrait être migré vers AlmaLinux 8/9 ou Rocky Linux 8/9, qui utilisent tous deux dnf. Écrire de nouveaux scripts d’automatisation ciblant exclusivement yum n’est plus conseillé.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer