Skip to Content

Chapitre 5.2 — apt & paquets

⏱️ TL;DR — Sur Debian/Ubuntu, on installe des logiciels avec apt, jamais en téléchargeant des binaires au hasard. La règle numéro un : apt update avant tout apt installupdate rafraîchit l’index (la liste de ce qui existe et en quelle version), upgrade met à jour ce qui est installé, full-upgrade va plus loin (il peut retirer des paquets). En dessous d’apt, il y a dpkg (l’outil bas niveau). Les logiciels viennent de dépôts déclarés dans /etc/apt/sources.list et sources.list.d/ ; ajouter un dépôt tiers (NodeSource, Docker…) exige d’installer sa clé GPG — c’est ce qui garantit l’authenticité des paquets. Corollaire sécurité : ne jamais lancer un curl … | bash sans comprendre ce qu’il fait.

🎯 Objectifs

  • Distinguer apt update, apt upgrade et apt full-upgrade, et les utiliser dans le bon ordre.
  • Installer, supprimer, chercher et inspecter des paquets (install, remove, autoremove, search, show, list).
  • Comprendre la couche dpkg sous apt (dpkg -i, dpkg -l).
  • Ajouter un dépôt tiers proprement, avec sa clé GPG, et savoir pourquoi c’est une décision de sécurité.
  • Refuser par réflexe les installations curl | bash non comprises.

apt : le gestionnaire de paquets, en trois verbes

Sur Debian et Ubuntu, tu n’installes pas un logiciel en téléchargeant un .exe : tu demandes à apt d’aller le chercher dans un dépôt, avec ses dépendances, ses mises à jour et sa signature. Trois commandes couvrent 90 % des cas.

apt update — rafraîchir l’index (ne met rien à jour)

apt update # Télécharge la liste À JOUR des paquets disponibles et de leurs versions, # depuis TOUS les dépôts déclarés. Ne modifie AUCUN logiciel installé.

C’est une source de confusion classique : apt update n’installe rien et ne met rien à jour. Il synchronise juste le catalogue local avec ce que proposent les dépôts. Sans lui, apt travaille avec une liste périmée et peut refuser d’installer, ou proposer une vieille version.

apt upgrade — appliquer les mises à jour

apt upgrade # Met à jour tous les paquets installés vers la version la plus récente # disponible dans l'index (celui rafraîchi par apt update).

upgrade est conservateur : il met à jour ce qui peut l’être sans jamais retirer un paquet déjà installé. Si une mise à jour exigerait de supprimer quelque chose, il la retient (tu verras The following packages have been kept back).

apt full-upgrade — le grand ménage

apt full-upgrade # Comme upgrade, mais AUTORISE la suppression de paquets si c'est nécessaire # pour résoudre les dépendances (ex. montée de version majeure).

full-upgrade (anciennement dist-upgrade) est plus agressif : pour appliquer certaines mises à jour, il peut retirer des paquets devenus incompatibles. C’est utile pour les montées de version, mais à utiliser en connaissance de cause.

💡 Réflexe — L’enchaînement standard de maintenance : apt update && apt upgrade. Le update d’abord (toujours), le upgrade ensuite. Le && garantit que upgrade ne se lance que si update a réussi. Grave-le : « update avant install, update avant upgrade ». Un oubli de update est la cause n°1 des « ce paquet n’existe pas » alors qu’il existe.

⚠️ Piège — Confondre update et upgrade. update ne met rien à jour — il ne fait que rafraîchir la liste. Beaucoup de débutants tapent apt update et croient leur système à jour : il ne l’est pas tant qu’ils n’ont pas fait apt upgrade. Les deux verbes, dans l’ordre.

Installer, supprimer, nettoyer

apt install htop # installe le paquet htop (et ses dépendances) apt install nginx postgresql # on peut en installer plusieurs d'un coup apt remove htop # désinstalle htop, MAIS garde ses fichiers de config apt purge htop # désinstalle htop ET supprime ses fichiers de config apt autoremove # retire les dépendances devenues orphelines apt clean # vide le cache des paquets .deb téléchargés (libère du disque)

Quelques précisions qui comptent :

  • remove vs purge : remove laisse les fichiers de configuration en place (pratique si tu réinstalles). purge fait table rase, config comprise.
  • autoremove : quand tu désinstalles un logiciel, ses dépendances restent parfois « orphelines ». autoremove fait le ménage. À lancer de temps en temps.
  • clean : apt garde les .deb téléchargés dans un cache (/var/cache/apt). Sur un petit disque, apt clean libère de la place sans rien casser.

Chercher et inspecter avant d’installer

apt search postgres # cherche "postgres" dans les noms/descriptions des paquets apt show nginx # affiche les détails d'un paquet : version, taille, description, dépendances apt list --installed # liste TOUS les paquets actuellement installés apt list --upgradable # liste ce qui a une mise à jour en attente

🐚 Au terminal — La séquence typique quand tu veux un nouvel outil : rafraîchir, inspecter, installer.

apt update # 1. rafraîchir l'index apt show ncdu # 2. vérifier ce que c'est avant d'installer apt install ncdu # 3. installer

dpkg : la couche en dessous

apt est une surcouche intelligente au-dessus de dpkg, l’outil bas niveau qui installe réellement les paquets .deb. Différence clé : dpkg ne gère pas les dépendances ni les dépôts — il installe un fichier .deb unique, point. apt, lui, résout les dépendances et va chercher les paquets dans les dépôts.

dpkg -i paquet.deb # installe un fichier .deb local (SANS résoudre les dépendances) dpkg -l # liste les paquets installés (façon dpkg) dpkg -l | grep nginx # filtre : les paquets dont le nom contient "nginx"

Quand utiliser dpkg -i ? Quand un éditeur te fournit un .deb à télécharger (certains outils propriétaires). Si l’installation râle sur des dépendances manquantes, un apt install -f (pour fix) les récupère depuis les dépôts.

💡 Réflexe — Au quotidien, utilise apt, pas dpkg. dpkg est l’outil de dépannage et de bas niveau (dpkg -l pour lister, dpkg -i pour un .deb isolé). Dès qu’il y a des dépendances ou un dépôt, apt fait le travail proprement.

Les dépôts : d’où viennent les paquets

apt ne télécharge pas au hasard : il puise dans des dépôts déclarés localement. Deux endroits :

  • /etc/apt/sources.list — le fichier principal, avec les dépôts officiels de la distribution.
  • /etc/apt/sources.list.d/ — un dossier où chaque dépôt tiers pose son propre fichier .list (ou .sources). C’est là qu’atterrissent NodeSource, Docker, PostgreSQL officiel, etc.

Les paquets des dépôts officiels de la distribution sont testés, signés et maintenus par l’équipe de la distro : c’est le choix par défaut, le plus sûr. Les dépôts tiers donnent accès à des versions plus récentes ou à des logiciels absents des dépôts officiels (ex. la dernière LTS de Node via NodeSource, ou Docker CE) — mais tu leur accordes ta confiance : leurs paquets s’installeront avec les droits root.

Ajouter un dépôt tiers : la clé GPG d’abord

Un dépôt tiers ne s’ajoute pas en collant juste une URL. Il faut installer sa clé GPG : c’est la signature cryptographique qui prouve que les paquets viennent bien de l’éditeur annoncé et n’ont pas été altérés. Sans clé valide, apt refuse le dépôt (NO_PUBKEY), et c’est une bonne chose.

La méthode moderne recommandée range la clé dans /etc/apt/keyrings/ et référence cette clé dans le fichier du dépôt (signed-by). Le schéma général, à adapter selon la doc officielle de l’éditeur :

# 1. Récupérer la clé GPG de l'éditeur et la déposer dans un keyring dédié # (l'URL exacte et le nom du fichier viennent de la DOC de l'éditeur) curl -fsSL https://exemple-editeur.com/gpg | gpg --dearmor -o /etc/apt/keyrings/exemple.gpg # 2. Déclarer le dépôt en le liant à cette clé (signed-by) echo "deb [signed-by=/etc/apt/keyrings/exemple.gpg] https://exemple-editeur.com/apt stable main" \ > /etc/apt/sources.list.d/exemple.list # 3. Rafraîchir l'index puis installer apt update apt install le-paquet

📚 La doc — Chaque éditeur (NodeSource, Docker, PostgreSQL…) publie sa procédure officielle d’ajout de dépôt, avec l’URL exacte de la clé et la ligne deb précise. Suis-la, ne recopie pas une commande trouvée sur un forum : les chemins de clés et la syntaxe (apt-key, désormais déconseillé, vs signed-by) ont évolué. La doc de l’éditeur fait autorité. Voir aussi man sources.list.

🔒 Sécurité — Ajouter un dépôt tiers, c’est élargir ta base de confiance. Les paquets de ce dépôt s’installeront et se mettront à jour avec les droits root. N’ajoute que des dépôts d’éditeurs officiels et réputés (l’éditeur du logiciel lui-même), avec leur clé GPG. Un dépôt douteux, c’est une porte d’entrée root permanente sur ta machine. Moins tu as de dépôts tiers, plus ta surface de confiance est petite.

Le piège du curl | bash

Tu vas croiser partout des instructions du type « installe-moi ça en une ligne » :

# Le pattern que tu verras partout — et sur lequel il faut RÉFLÉCHIR : curl -fsSL https://un-site.example/install.sh | bash

Ce que fait cette ligne : elle télécharge un script depuis Internet et l’exécute immédiatement, souvent avec les droits root (si précédé de sudo). Tu n’as rien lu de ce que ce script fait. Il peut installer proprement… ou ajouter un dépôt, un utilisateur, une clé SSH, un cron malveillant — tu n’en sais rien.

⚠️ Piège — Le curl … | bash exécuté sans le lire est l’un des vecteurs de compromission les plus courants. Le serveur qui héberge le script peut être piraté, ou l’URL usurpée. Tu donnes root à du code que tu n’as pas vu. Ce n’est pas « paranoïaque » : c’est l’hygiène de base.

💡 Réflexe — Si tu dois utiliser un installeur en ligne, télécharge d’abord, lis, puis exécute :

curl -fsSL https://un-site.example/install.sh -o install.sh # 1. télécharger less install.sh # 2. LIRE ce qu'il fait bash install.sh # 3. exécuter en connaissance de cause

Et quand c’est possible, préfère l’installation par apt (dépôt officiel + clé GPG) : c’est signé, tracé, mis à jour proprement. Un apt install vaut mieux qu’un script opaque.

🧭 Sur FormaCampus — Pour faire tourner le front Next.js, l’équipe a besoin d’une version récente de Node.js — plus récente que celle des dépôts Ubuntu par défaut. Deux options : le dépôt officiel NodeSource (ajouté proprement avec sa clé GPG, puis apt install nodejs), ou un gestionnaire de versions. Ils choisissent le dépôt NodeSource officiel : les mises à jour de Node passeront ensuite par apt upgrade comme le reste, tracées et signées. Ce qu’ils refusent : coller un curl | bash d’un blog pour installer Node « vite fait ». On installe la prod avec méthode, pas à l’aveugle.

Ce qu’il faut retenir

apt est ton point d’entrée unique pour installer et maintenir des logiciels : update (rafraîchir), upgrade (mettre à jour), install/remove/autoremove/clean (gérer), search/show/list (inspecter). dpkg est la couche en dessous. Les dépôts tiers apportent de la souplesse au prix de la confiance : clé GPG obligatoire, éditeurs officiels seulement. Et devant tout curl | bash : on lit avant d’exécuter, ou on passe par apt.

✏️ Exercices

Exercice 1 — Update ou upgrade ? Un collègue dit : « J’ai fait apt update, mon serveur est à jour. » Que lui réponds-tu, et quelle est la bonne séquence pour mettre réellement le système à jour ?

✅ Solution

apt update ne met rien à jour : il rafraîchit seulement l’index des paquets disponibles. Le système n’est pas à jour tant qu’on n’a pas appliqué les mises à jour. La bonne séquence :

apt update && apt upgrade

update rafraîchit la liste, upgrade installe effectivement les nouvelles versions. Le && fait que upgrade ne se lance que si update a réussi.

Exercice 2 — Installer Node proprement. Tu dois installer une version récente de Node.js, absente des dépôts Ubuntu par défaut. On te propose un curl … | sudo bash d’un blog. Que fais-tu à la place, et pourquoi ?

✅ Solution

Je n’exécute pas un curl | bash d’un blog inconnu : il s’exécuterait avec les droits root sans que je l’aie lu. À la place, j’utilise la procédure officielle de l’éditeur (ici NodeSource) : récupérer sa clé GPG dans /etc/apt/keyrings/, déclarer le dépôt dans /etc/apt/sources.list.d/ en le liant à la clé (signed-by), puis apt update && apt install nodejs. Avantages : les paquets sont signés, l’installation est tracée, et les futures mises à jour passent par apt upgrade comme le reste. Si je tenais vraiment à un installeur en ligne, je le téléchargerais, le lirais (less), puis l’exécuterais — jamais en aveugle.

🧠 Quiz de révision

1. Quelle est la différence entre apt update et apt upgrade ?

apt update rafraîchit l’index des paquets (la liste de ce qui existe et en quelle version) — il ne modifie aucun logiciel. apt upgrade applique les mises à jour aux paquets installés. On fait toujours update avant upgrade, sinon upgrade travaille avec une liste périmée.

2. apt upgrade vs apt full-upgrade : lequel peut supprimer des paquets ?

apt full-upgrade. upgrade est conservateur : il met à jour sans jamais retirer de paquet (il « retient » une MàJ qui exigerait une suppression). full-upgrade autorise la suppression de paquets pour résoudre les dépendances — plus puissant, à utiliser en connaissance de cause.

3. À quoi sert la clé GPG d’un dépôt tiers ?

Elle authentifie les paquets : c’est la signature cryptographique qui prouve qu’ils viennent bien de l’éditeur annoncé et n’ont pas été altérés en route. Sans clé valide, apt refuse le dépôt (NO_PUBKEY). Ajouter un dépôt sans vérifier sa clé reviendrait à installer du code root non authentifié.

4. Pourquoi se méfier d’un curl … | bash ?

Parce qu’il télécharge et exécute immédiatement un script (souvent en root) que tu n’as pas lu. Le serveur source peut être compromis ou l’URL usurpée : tu donnes root à du code inconnu. Le bon réflexe : télécharger, lire (less), puis exécuter — ou mieux, passer par apt (dépôt officiel signé).

5. apt et dpkg : lequel gère les dépendances et les dépôts ?

apt. C’est la surcouche qui résout les dépendances et télécharge depuis les dépôts. dpkg est l’outil bas niveau qui installe un .deb isolé, sans gérer dépendances ni dépôts. Au quotidien on utilise apt ; dpkg sert au dépannage (dpkg -l, dpkg -i pour un .deb local).


Chapitre suivant : 5.3 — L’utilisateur deploy — on quitte enfin root : créer l’utilisateur de travail, lui donner sudo et sa clé, puis verrouiller l’accès root.

Last updated on