Passer au contenu principal
Linux, OS

APT sous Debian : gérer les paquets sans casser le système

Un système Debian bien nourri est généralement un système heureux.

Et pour le nourrir, inutile de déposer des graines devant le serveur ou d’invoquer un quelconque dieu manchot : Debian utilise des paquets, des dépôts soigneusement organisés et un ensemble d’outils capables d’installer plusieurs milliers de logiciels sans transformer immédiatement /usr en décharge municipale.

Au centre de cette mécanique se trouve APT, qui sait où chercher les logiciels, quelles versions installer, quelles dépendances ajouter et quelles signatures vérifier.

En dessous travaille dpkg, plus proche de la mécanique brute du paquet Debian.

La distinction essentielle :
dpkg sait manipuler des paquets Debian.
APT sait en plus gérer les dépôts, les versions et les dépendances.
C’est la différence entre savoir monter une roue et organiser toute la circulation routière.

Qu’est-ce qu’un paquet Debian ?

Un paquet Debian est généralement distribué sous la forme d’un fichier portant l’extension .deb.

Il contient notamment :

  • les fichiers du logiciel ;
  • des métadonnées : nom, version, architecture, description, dépendances, etc. ;
  • la liste de certains fichiers de configuration ;
  • éventuellement des scripts exécutés avant ou après l’installation, la mise à jour ou la suppression.

On trouve par exemple des scripts de maintenance appelés :

  • preinst : avant l’installation ;
  • postinst : après l’installation ;
  • prerm : avant la suppression ;
  • postrm : après la suppression.

Un paquet Debian n’est donc pas simplement une archive que l’on décompresse sauvagement dans /usr/bin avant de prétendre que tout va bien.

Il participe à une base de données permettant au système de savoir quels fichiers appartiennent à quel paquet, quelle version est installée et dans quel état elle se trouve.

Voir les informations d’un paquet installé

dpkg -s bash

Voir les fichiers installés par un paquet

dpkg -L bash

Trouver à quel paquet appartient un fichier

dpkg -S /bin/bash

Très utile lorsqu’on découvre un fichier mystérieux sur un serveur et qu’on souhaite déterminer s’il appartient à Debian ou à Gérard, administrateur système de 2009 dont personne ne retrouve le numéro.

dpkg et APT : qui fait quoi ?

dpkg est l’outil de bas niveau chargé de manipuler la base de données des paquets Debian et les fichiers .deb.

Par exemple :

sudo dpkg -i paquet.deb

demande à dpkg d’installer directement ce fichier.

Mais dpkg ne va pas automatiquement parcourir vos dépôts pour résoudre toutes les dépendances manquantes.

APT, lui, travaille à un niveau supérieur :

sudo apt install nginx

APT :

  1. cherche la version appropriée de nginx dans les dépôts configurés ;
  2. calcule les dépendances nécessaires ;
  3. télécharge les paquets ;
  4. vérifie leur provenance via la chaîne d’authentification des dépôts ;
  5. demande à dpkg de les installer ;
  6. essaie de maintenir l’ensemble dans un état cohérent.

C’est généralement APT que l’administrateur utilise au quotidien.

dpkg reste indispensable, mais on évite de lui demander de gérer seul une situation qui implique quarante dépendances et trois conflits de versions.

Il a déjà suffisamment de responsabilités.

Installer un fichier .deb local proprement

On voit encore souvent :

sudo dpkg -i logiciel.deb
sudo apt --fix-broken install

Cela peut fonctionner, mais APT sait aujourd’hui installer directement un fichier .deb local et résoudre ses dépendances disponibles dans les dépôts :

sudo apt install ./logiciel.deb

Le ./ est important : il indique qu’il s’agit d’un fichier local et non du nom d’un paquet à rechercher dans les dépôts.

Quand APT peut faire le travail proprement dès le début, il n’est pas obligatoire de provoquer d’abord un problème pour avoir ensuite le plaisir de le réparer.

Les dépôts : le supermarché de Debian

APT récupère normalement les logiciels dans des dépôts.

Un dépôt Debian contient des paquets, leurs métadonnées, leurs versions et les informations permettant à APT de vérifier leur authenticité et leur intégrité.

Debian distingue notamment plusieurs composants.

Composant Contenu
main Logiciels conformes aux principes du logiciel libre de Debian et ne dépendant que de composants compatibles.
contrib Logiciels libres qui nécessitent ou sont destinés à fonctionner avec des éléments non libres.
non-free Logiciels ne satisfaisant pas aux critères de liberté de Debian mais néanmoins distribuables.
non-free-firmware Firmwares non libres, séparés de non-free depuis Debian 12.

main constitue le cœur libre de Debian.

contrib, non-free et non-free-firmware existent pour gérer ce détail regrettable de la réalité selon lequel certains constructeurs n’ont pas reçu le mémo concernant le logiciel libre.

Stable, testing et unstable : les suites Debian

Il ne faut pas confondre les composants précédents avec les suites de Debian.

Les principales sont :

Suite Principe Usage typique
stable Version officiellement publiée et maintenue. Serveurs, postes de travail et systèmes privilégiant la stabilité.
testing Prépare la prochaine version stable. Utilisateurs souhaitant des logiciels plus récents et acceptant davantage de mouvement.
unstable Branche de développement active, appelée sid. Développement Debian, tests et utilisateurs expérimentés.

unstable ne signifie pas nécessairement qu’un ordinateur explose au démarrage.

Cela signifie surtout que les paquets y évoluent rapidement et qu’aucune promesse équivalente à Stable n’est faite concernant la tranquillité quotidienne.

Autrement dit, le casque n’est pas obligatoire.

Mais il reste dans le catalogue.

Les noms de code

Chaque version possède également un nom de code.

Par exemple, Debian 13 porte le nom Trixie.

Dans une configuration APT, on peut donc rencontrer :

stable

ou :

trixie

Ces deux noms peuvent désigner la même version à un moment donné, mais leur comportement dans le temps est très différent.

stable est un alias mouvant. Lorsqu’une nouvelle Debian devient Stable, l’alias change de version.

trixie, lui, continue à désigner Trixie.

Pour un système que l’on souhaite mettre à niveau volontairement, utiliser le nom de code est généralement plus prudent.

Sinon, un jour, stable peut soudain désigner la génération suivante et APT arriver avec plusieurs milliers de mises à jour en donnant l’impression qu’il avait préparé quelque chose dans votre dos.

Où APT trouve-t-il ses dépôts ?

Historiquement, la configuration principale se trouvait dans :

/etc/apt/sources.list

APT utilise également :

/etc/apt/sources.list.d/

pour conserver des dépôts dans des fichiers séparés.

Deux formats existent aujourd’hui.

L’ancien format : sources.list

Le format traditionnel utilise une ligne par source :

deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware

Sa structure générale est :

deb URI suite composant1 composant2 ...

deb désigne les paquets binaires.

deb-src permet d’activer les index contenant les paquets sources.

Par exemple :

deb-src https://deb.debian.org/debian trixie main

Ce format fonctionne toujours, mais il est désormais considéré comme ancien et déprécié au profit du format Deb822.

Le format moderne : debian.sources

Sur les systèmes Debian modernes, notamment Debian 13, le format Deb822 est recommandé.

On rencontre typiquement :

/etc/apt/sources.list.d/debian.sources

Une configuration peut ressembler à ceci :

Types: deb
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://security.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Ce format est plus verbeux, mais aussi plus lisible lorsqu’une source nécessite plusieurs options.

On gagne notamment des champs explicites :

  • Types: ;
  • URIs: ;
  • Suites: ;
  • Components: ;
  • Signed-By:.

Le vieux fichier à une ligne n’a donc pas encore disparu.

Il regarde simplement Deb822 prendre progressivement son bureau.

Le dépôt de sécurité

Une installation Stable doit évidemment recevoir les mises à jour de sécurité.

Pour Debian 13, la suite correspondante est :

trixie-security

Elle provient du dépôt de sécurité Debian :

https://security.debian.org/debian-security

Ce dépôt ne doit pas être considéré comme un bonus réservé aux utilisateurs ayant beaucoup de temps libre.

Sur un serveur exposé à Internet, ignorer les mises à jour de sécurité est une stratégie.

Simplement pas une bonne.

trixie-updates : les mises à jour qui ne veulent pas attendre

La suite :

trixie-updates

permet à Debian de diffuser certains changements utiles avant la prochaine révision de la version Stable.

Elle complète la distribution stable et fait normalement partie d’une configuration Debian classique.

Backports : du logiciel plus récent sans déménager dans testing

Debian Stable privilégie la stabilité, ce qui signifie que les versions majeures des logiciels évoluent peu pendant la vie d’une version.

Parfois, on a pourtant besoin d’un logiciel plus récent.

C’est le rôle des backports.

Ils proposent des paquets issus de versions plus récentes de Debian et recompilés pour la version Stable.

Pour Trixie, la suite est :

trixie-backports

On peut ensuite demander explicitement une version backportée, par exemple :

sudo apt install -t trixie-backports nom-du-paquet

C’est généralement préférable à mélanger sauvagement Stable et Testing dans les mêmes sources jusqu’à ce qu’APT demande un avocat.

Les miroirs et deb.debian.org

Les dépôts Debian existent sur de nombreux serveurs miroirs répartis dans le monde.

Historiquement, on choisissait souvent manuellement un miroir proche.

Des outils comme netselect-apt peuvent encore aider à comparer certains serveurs.

Mais Debian recommande aujourd’hui généralement :

https://deb.debian.org/debian

deb.debian.org fournit un service de distribution qui dirige les requêtes vers une infrastructure adaptée.

Dans la majorité des cas, il n’est donc plus nécessaire de passer une soirée à chronométrer douze miroirs universitaires à l’aide d’un tableur.

Une soirée vient d’être sauvée.

apt update : mettre à jour le catalogue, pas le système

La commande :

sudo apt update

ne met pas à jour vos logiciels.

Elle télécharge les index des paquets disponibles depuis les sources configurées.

APT apprend ainsi :

  • quels paquets existent ;
  • quelles versions sont disponibles ;
  • de quelles dépendances ils ont besoin ;
  • et quelles mises à jour peuvent être proposées.

apt update met à jour la connaissance d’APT.
Il ne met pas encore à jour les programmes installés.

C’est une distinction simple, mais responsable d’un nombre surprenant de conversations où quelqu’un affirme avoir « fait toutes les mises à jour » après avoir uniquement rafraîchi le catalogue.

Voir les mises à jour disponibles

Après :

sudo apt update

on peut afficher les paquets pouvant être mis à jour :

apt list --upgradable

Pratique pour savoir ce qui va bouger avant de donner à APT l’autorisation de bouger effectivement quelque chose.

apt upgrade : mettre à jour les paquets installés

sudo apt upgrade

installe les nouvelles versions disponibles des paquets déjà présents, dans les limites des changements de dépendances qu’APT considère compatibles avec ce mode d’upgrade.

La commande est adaptée aux mises à jour courantes.

Avant d’accepter, APT affiche ce qu’il compte :

  • mettre à jour ;
  • installer ;
  • conserver éventuellement à la version actuelle.

Lisez cette liste.

Elle constitue la dernière occasion polie qu’APT vous offre avant de commencer les travaux.

apt full-upgrade : quand les dépendances doivent bouger

La commande :

sudo apt full-upgrade

est plus permissive.

Elle autorise APT à modifier plus profondément l’ensemble des dépendances et, si nécessaire, à supprimer certains paquets pour terminer la mise à niveau.

C’est l’équivalent moderne, côté apt, du traditionnel :

apt-get dist-upgrade

Ce n’est pas une commande dangereuse par nature.

Mais si elle annonce :

« 147 paquets seront supprimés, dont votre environnement graphique, SSH et probablement votre confiance dans l’humanité »

il est raisonnable de répondre non avant d’enquêter.

Installer un paquet

sudo apt install nginx

APT sélectionne la version candidate, résout ses dépendances et installe le tout.

Plusieurs paquets peuvent être installés en une seule commande :

sudo apt install nginx curl vim

Rechercher un paquet

apt search serveur-web

La recherche porte notamment sur les noms et descriptions disponibles dans les index APT.

Pour une recherche plus ciblée, connaître le véritable nom du paquet reste préférable.

Afficher les informations d’un paquet

apt show nginx

On peut y trouver :

  • la version ;
  • l’architecture ;
  • les dépendances ;
  • la taille ;
  • la description ;
  • la source du paquet ;
  • et diverses métadonnées.

Quelle version APT veut-il installer ?

Lorsque plusieurs dépôts proposent un même paquet, utilisez :

apt policy nginx

ou :

apt-cache policy nginx

Vous verrez notamment :

  • la version installée ;
  • la version candidate ;
  • les autres versions connues ;
  • et les dépôts qui les fournissent.

Avant d’accuser APT d’avoir choisi « la mauvaise version », il est toujours instructif de lui demander laquelle il comptait réellement choisir.

Supprimer un paquet : remove

sudo apt remove nginx

remove désinstalle le paquet mais conserve normalement ses fichiers de configuration gérés comme tels par dpkg.

Cela permet de réinstaller ultérieurement le programme tout en récupérant une partie de sa configuration précédente.

En quelque sorte :

« Sortez de chez moi, mais laissez vos meubles, au cas où. »

Supprimer aussi la configuration : purge

sudo apt purge nginx

purge va plus loin en supprimant également les fichiers de configuration que le système de paquets connaît et que les scripts de suppression prennent en charge.

Mais attention à une idée reçue :

purge ne signifie pas nécessairement « effacer toute trace du logiciel partout sur la machine ».

Des données générées par l’application peuvent rester présentes.

Les fichiers créés dans les répertoires personnels des utilisateurs ne sont notamment pas effacés automatiquement simplement parce que vous purgez le paquet.

Si vous purgez un serveur de base de données, vérifiez donc ce que deviennent ses données avant de conclure qu’APT a reçu le mandat de pratiquer une politique de terre brûlée.

Les dépendances automatiques et autoremove

Lorsqu’APT installe un logiciel, il peut installer automatiquement d’autres paquets nécessaires à son fonctionnement.

APT garde la distinction entre :

  • les paquets installés explicitement ;
  • les paquets installés automatiquement comme dépendances.

Lorsque plus aucun paquet installé n’a besoin d’une ancienne dépendance automatique, celle-ci peut devenir supprimable.

APT propose alors :

sudo apt autoremove

Avant d’accepter, regardez la liste.

Dans une installation normalement gérée, elle est généralement raisonnable.

Mais supprimer automatiquement quinze paquets dont on ne reconnaît aucun nom n’est pas une preuve qu’ils sont inutiles.

C’est une preuve que l’administrateur ne reconnaît pas leur nom.

Nuance professionnelle importante.

Autoremove avec purge

On peut également demander la suppression des configurations associées :

sudo apt autoremove --purge

ou, avec les versions récentes d’APT :

sudo apt autopurge

Paquet manuel ou automatique ?

Pour voir quels paquets sont marqués comme installés manuellement :

apt-mark showmanual

Pour marquer un paquet comme manuel :

sudo apt-mark manual nom-du-paquet

Ou comme dépendance automatique :

sudo apt-mark auto nom-du-paquet

Ce mécanisme influence notamment le comportement d’autoremove.

Bloquer temporairement une mise à jour

On peut demander à APT de conserver un paquet à sa version actuelle :

sudo apt-mark hold nom-du-paquet

Voir les paquets bloqués :

apt-mark showhold

Lever le blocage :

sudo apt-mark unhold nom-du-paquet

Un hold peut être utile lorsqu’une mise à jour pose un problème connu.

En accumuler quinze pendant trois ans crée en revanche un écosystème logiciel dont l’évolution mérite probablement une étude anthropologique.

Nettoyer le cache APT

Les paquets téléchargés peuvent être conservés dans :

/var/cache/apt/archives/

Pour supprimer les archives téléchargées du cache :

sudo apt clean

Pour supprimer seulement les archives devenues inutilisables parce qu’elles ne sont plus disponibles au téléchargement :

sudo apt autoclean

Ce nettoyage libère de l’espace disque.

Il ne désinstalle pas les logiciels correspondants.

Vous nettoyez le garde-manger, pas les gens qui mangent dedans.

Les dépôts tiers : là où commence l’aventure

APT peut utiliser des dépôts autres que ceux de Debian.

C’est utile pour certains logiciels dont l’éditeur maintient son propre dépôt.

Mais chaque dépôt tiers ajouté à votre système devient une nouvelle source capable de fournir du logiciel à APT.

Il faut donc éviter la méthode traditionnelle :

« J’ai trouvé cette commande de 437 caractères sur un blog de 2016, je vais la coller en root. »

Signer correctement un dépôt tiers

Les configurations modernes utilisent une clé dédiée au dépôt et la directive Signed-By.

Les clés ajoutées manuellement par l’administrateur peuvent notamment être stockées dans :

/etc/apt/keyrings/

Une source Deb822 peut ensuite préciser :

Signed-By: /etc/apt/keyrings/editeur.gpg

Cette approche permet de limiter la confiance accordée à une clé au dépôt concerné.

apt-key : à éviter

De nombreux anciens tutoriels utilisent encore :

apt-key add ...

Cette méthode est obsolète.

Pour une nouvelle configuration, utilisez des keyrings dédiés et Signed-By.

Un tutoriel qui commence par apt-key n’est pas nécessairement faux dans toutes ses lignes.

Il vient simplement de vous indiquer son âge sans avoir à montrer sa carte d’identité.

Pourquoi APT fait confiance aux dépôts Debian

APT ne télécharge pas simplement un fichier au hasard depuis Internet avant de croiser les doigts.

Les dépôts Debian publient des métadonnées signées cryptographiquement.

Ces métadonnées contiennent notamment les empreintes cryptographiques des index, qui contiennent à leur tour les informations permettant de vérifier les paquets téléchargés.

APT peut ainsi contrôler que les données proviennent d’une archive dont il reconnaît la clé et qu’elles n’ont pas été modifiées à son insu.

D’où une règle simple :

Ne désactivez pas les contrôles de sécurité d’APT simplement parce qu’un dépôt mal configuré vous empêche d’installer votre logiciel.

Une alarme qui sonne n’est pas toujours défectueuse parce qu’elle vous dérange.

Mélanger Stable, Testing et Unstable : le FrankenDebian

Il est techniquement possible d’ajouter simultanément plusieurs branches Debian dans APT.

Il est également techniquement possible de construire une table avec trois pieds.

Le résultat peut même fonctionner pendant un certain temps.

Ajouter :

stable
testing
unstable

sans comprendre la sélection des versions et le pinning peut entraîner une cascade de mises à niveau de bibliothèques et de dépendances qui transforme progressivement une Stable en quelque chose d’impossible à décrire lors d’un ticket de support.

Si vous avez uniquement besoin de quelques logiciels plus récents, les backports sont généralement une meilleure première option.

Le pinning : choisir précisément les priorités

APT permet de définir des préférences de versions dans :

/etc/apt/preferences

ou :

/etc/apt/preferences.d/

C’est ce qu’on appelle généralement le pinning.

Il permet par exemple de donner une priorité particulière :

  • à une version précise ;
  • à une suite ;
  • à une origine de paquet.

C’est un outil puissant.

Et comme beaucoup d’outils puissants, il devient surtout intéressant après avoir lu la documentation, plutôt qu’avant.

Quand APT se plaint de dépendances cassées

Il arrive qu’une installation soit interrompue, qu’un paquet reste partiellement configuré ou que des dépendances deviennent incohérentes.

Deux commandes classiques peuvent alors être utiles.

Terminer les configurations en attente

sudo dpkg --configure -a

Cette commande demande à dpkg de configurer les paquets qui ont été décompressés mais dont la configuration n’a pas été terminée.

Réparer les dépendances cassées

sudo apt --fix-broken install

ou :

sudo apt -f install

APT tente alors de trouver une solution permettant de remettre la base des dépendances dans un état cohérent.

Ce n’est pas une commande de dernier recours.

C’est précisément l’un des outils prévus pour traiter ce type de problème.

En revanche, comme toujours, il faut lire ce qu’APT propose avant de confirmer.

Réparer trois dépendances est une chose.

Résoudre le problème en supprimant la moitié de GNOME et votre hyperviseur en est une autre.

Vérifier l’état des dépendances

Pour effectuer un contrôle :

sudo apt-get check

Cette commande examine notamment le cache de paquets et recherche des dépendances cassées.

Elle est utile pour diagnostiquer avant de commencer à modifier le système au hasard, technique qui conserve encore malheureusement une certaine popularité.

Quand dpkg a été interrompu

Vous pouvez rencontrer un message du type :

dpkg was interrupted, you must manually run
'dpkg --configure -a'

Dans ce cas, la commande proposée par le message est généralement un indice raisonnable :

sudo dpkg --configure -a

Une coupure d’électricité pendant une mise à jour n’est jamais idéale.

Une coupure d’électricité suivie de quinze commandes trouvées au hasard sur Internet est généralement moins idéale encore.

APT est verrouillé : ne supprimez pas immédiatement le lock

Autre message classique :

Could not get lock ...

Cela signifie souvent qu’un autre processus APT ou dpkg travaille déjà :

  • une autre commande apt ;
  • une mise à jour automatique ;
  • un outil graphique ;
  • un service système.

La mauvaise réaction consiste à supprimer immédiatement tous les fichiers nommés lock avant de tuer quelques processus pour faire bonne mesure.

Commencez par déterminer qui utilise réellement le gestionnaire de paquets.

Deux processus modifiant simultanément la base dpkg ne constituent pas une optimisation parallèle.

Ils constituent une demande d’incident.

Les fichiers de configuration pendant une mise à jour

Debian fait particulièrement attention aux fichiers de configuration modifiés localement.

Lorsqu’un paquet fournit une nouvelle version d’un fichier que vous avez modifié, dpkg peut vous demander quoi faire.

Typiquement :

  • conserver votre version actuelle ;
  • installer celle du mainteneur ;
  • examiner les différences ;
  • ouvrir un shell pour enquêter.

Ne choisissez pas systématiquement une réponse uniquement parce qu’elle est proposée en premier.

Sur un serveur, un fichier de configuration est parfois le résultat de six ans d’histoire, trois migrations et une décision inexplicable dont dépend pourtant la paie.

Voir les versions disponibles

Pour afficher toutes les versions connues d’un paquet :

apt list -a nginx

On peut également utiliser :

apt-cache policy nginx

Installer une version précise

Si cette version est encore disponible dans les sources configurées :

sudo apt install nom-du-paquet=version

Par exemple, conceptuellement :

sudo apt install exemple=1.2.3-1

Attention : revenir à une version antérieure peut créer des problèmes de dépendances ou de compatibilité des données.

APT sait installer une ancienne version si vous lui fournissez les conditions nécessaires.

Il ne garantit pas que l’application elle-même appréciera ce voyage dans le temps.

apt et apt-get : pourquoi deux commandes ?

Les deux appartiennent à la même famille d’outils.

apt est conçu comme une interface agréable pour une utilisation interactive par un humain.

apt-get est plus ancien, plus stable dans son interface et généralement préférable dans les scripts lorsque l’on recherche un comportement automatisable et durable.

Contexte Choix courant
Terminal interactif apt
Scripts et automatisation apt-get

Taper apt-get manuellement n’est évidemment pas interdit.

La police Debian ne viendra pas.

Quelques commandes APT indispensables

Commande Fonction
apt update Rafraîchit les index des dépôts.
apt list --upgradable Affiche les mises à jour disponibles.
apt upgrade Met à jour les paquets installés sans les changements les plus agressifs de dépendances.
apt full-upgrade Effectue une mise à niveau complète et peut supprimer certains paquets si nécessaire.
apt install paquet Installe ou met à jour un paquet.
apt remove paquet Supprime le paquet en conservant normalement ses conffiles.
apt purge paquet Supprime également les configurations gérées par le paquet.
apt autoremove Supprime les dépendances automatiques devenues inutiles.
apt search terme Recherche des paquets.
apt show paquet Affiche les informations du paquet.
apt policy paquet Affiche notamment la version candidate et les origines disponibles.
apt clean Vide le cache des paquets téléchargés.

Une routine de mise à jour raisonnable

Pour une machine Debian Stable classique :

sudo apt update
apt list --upgradable
sudo apt upgrade

On commence donc par :

  1. rafraîchir les index ;
  2. regarder ce qui est disponible ;
  3. effectuer les mises à jour.

Selon la situation, notamment lors de transitions de dépendances plus importantes, un :

sudo apt full-upgrade

peut ensuite être approprié.

Sur une machine critique, on ajoutera idéalement à cette méthode révolutionnaire :

  • une sauvegarde ;
  • une fenêtre de maintenance ;
  • une lecture des annonces importantes ;
  • et la possibilité de revenir en arrière si quelque chose se passe mal.

Ce dernier point semble évident jusqu’au jour où l’unique serveur DNS de l’entreprise est également la machine sur laquelle on expérimente.

Les mises à jour automatiques

Debian peut automatiser certaines mises à jour, notamment avec le paquet :

unattended-upgrades

Selon la politique du système, cela peut permettre d’appliquer automatiquement certaines mises à jour, en particulier de sécurité.

L’automatisation est très utile, mais elle ne remplace pas la supervision.

Une mise à jour automatique non surveillée n’est pas une stratégie de maintenance autonome. C’est simplement une machine qui prend des décisions pendant votre absence.

Bonnes pratiques

  • Utilisez en priorité les dépôts Debian officiels.
  • Utilisez le nom de code de votre version si vous voulez contrôler volontairement les changements majeurs de distribution.
  • Exécutez apt update lorsque les index doivent être rafraîchis, notamment avant une séquence de mises à jour.
  • Lisez ce qu’APT propose avant de confirmer une installation, un autoremove ou un full-upgrade.
  • Préférez les backports à un mélange improvisé de Stable et Testing lorsqu’ils répondent au besoin.
  • Utilisez Signed-By et des keyrings dédiés pour les dépôts tiers.
  • N’utilisez pas --allow-unauthenticated ou des dépôts déclarés aveuglément fiables pour faire disparaître un avertissement que vous ne comprenez pas.
  • Ne supprimez pas les verrous dpkg au hasard.
  • Sauvegardez avant les changements importants.

Quand ça part en vrille : méthode de survie

Lorsque le gestionnaire de paquets commence à présenter des symptômes inquiétants, évitez d’enchaîner immédiatement vingt commandes de réparation différentes.

Procédez dans l’ordre.

1. Lire l’erreur

Oui, entièrement.

Parfois même jusqu’à la dernière ligne, là où le programme explique précisément quoi faire.

2. Vérifier les dépôts

sudo apt update

Les erreurs 404, signatures invalides, suites inexistantes ou dépôts tiers défaillants doivent être corrigés avant de demander à APT de prendre davantage de décisions.

3. Vérifier les dépendances

sudo apt-get check

4. Terminer les installations interrompues

sudo dpkg --configure -a

5. Réparer les dépendances

sudo apt --fix-broken install

6. Examiner la politique des versions

Pour le paquet problématique :

apt policy nom-du-paquet

7. Regarder ce qu’APT veut réellement faire

Avant de répondre Y, vérifiez les paquets qui vont être :

  • installés ;
  • mis à jour ;
  • supprimés ;
  • conservés.

APT n’est pas malveillant.

Mais il possède une qualité rare : lorsqu’on lui donne une configuration absurde, il essaie souvent malgré tout d’en déduire une solution mathématiquement cohérente.

Le résultat peut manquer légèrement de sens humain.

Ce qu’il ne faut surtout pas faire

Installer des .deb trouvés partout

Un .deb n’est pas automatiquement sûr parce que son extension ressemble à celle utilisée par Debian.

C’est un paquet capable d’installer des fichiers et d’exécuter des scripts avec les privilèges accordés à son installation.

Ajouter dix dépôts tiers pour avoir « la dernière version »

Chaque dépôt supplémentaire peut introduire :

  • des versions différentes ;
  • des dépendances différentes ;
  • des clés supplémentaires ;
  • des politiques de publication différentes.

Au bout d’un certain nombre, votre machine cesse progressivement d’être une Debian et devient une conférence internationale de gestionnaires de paquets.

Copier des commandes root sans les comprendre

curl quelque-chose | sudo bash

peut être pratique.

Mais avant de l’exécuter, il est raisonnable de savoir ce que « quelque-chose » contient.

Le HTTPS protège le transport.

Il ne garantit pas que la commande située au bout est une bonne idée.

Supprimer manuellement des fichiers appartenant à des paquets

Si un fichier appartient à un paquet, laissez idéalement le gestionnaire de paquets s’en occuper.

Sinon, la base dpkg continuera à penser que le fichier existe et vous aurez réussi à créer une différence subtile entre l’état déclaré et la réalité.

Concept très apprécié des audits.

Le gestionnaire de paquets en une seule vue

Lorsque vous exécutez :

sudo apt install nginx

voici, de manière simplifiée, ce qui se produit :

  1. APT consulte ses index locaux ;
  2. il détermine la version candidate de nginx ;
  3. il calcule ses dépendances ;
  4. il choisit les versions compatibles ;
  5. il télécharge les archives nécessaires ;
  6. il vérifie leur cohérence avec les métadonnées authentifiées du dépôt ;
  7. il transmet les paquets à dpkg ;
  8. dpkg décompresse les fichiers ;
  9. les scripts de maintenance sont exécutés lorsque nécessaire ;
  10. les paquets sont configurés ;
  11. APT met à jour son état.

Et vous obtenez finalement un serveur web.

Vous avez tapé trois mots.

Des milliers de lignes de métadonnées et plusieurs systèmes de dépendances ont travaillé derrière.

Comme souvent en informatique, l’interface utilisateur consiste principalement à masquer la quantité de choses susceptibles de mal tourner.

Résumé

Besoin Commande
Rafraîchir les dépôts sudo apt update
Voir les mises à jour apt list --upgradable
Mettre à jour normalement sudo apt upgrade
Effectuer une mise à niveau complète sudo apt full-upgrade
Installer sudo apt install paquet
Installer un .deb local sudo apt install ./paquet.deb
Supprimer sudo apt remove paquet
Purger sudo apt purge paquet
Supprimer les dépendances inutiles sudo apt autoremove
Rechercher apt search terme
Afficher les détails apt show paquet
Voir les versions et priorités apt policy paquet
Terminer les configurations interrompues sudo dpkg --configure -a
Réparer les dépendances sudo apt --fix-broken install
Vérifier les dépendances sudo apt-get check
Nettoyer le cache sudo apt clean

Conclusion : nourrir Debian sans lui donner n’importe quoi

Le système de paquets est l’une des grandes forces de Debian.

APT ne se contente pas de télécharger des programmes : il gère des dépôts, des versions, des dépendances, des mises à jour, des suppressions et une chaîne de confiance permettant d’administrer un système pendant des années sans devoir installer chaque logiciel à la main.

Pour rester serein, quelques principes suffisent :

  • privilégier les dépôts officiels ;
  • comprendre quelle suite Debian est utilisée ;
  • garder les mises à jour de sécurité actives ;
  • limiter les dépôts tiers ;
  • regarder ce qu’APT propose avant d’accepter ;
  • et conserver une sauvegarde lorsque l’opération devient importante.

Gérer les paquets sous Debian ressemble finalement assez bien à gérer un réfrigérateur.

Il faut savoir ce qu’il contient, vérifier les dates, éviter de mélanger n’importe quoi et se méfier du paquet dont personne ne se souvient avoir autorisé l’entrée.

À une différence près :

si un yaourt est périmé, il ne tente généralement pas de supprimer libc6.

Bon appétit, et bon APT.