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 :
dpkgsait manipuler des paquets Debian.
APTsait 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 :
- cherche la version appropriée de
nginxdans les dépôts configurés ; - calcule les dépendances nécessaires ;
- télécharge les paquets ;
- vérifie leur provenance via la chaîne d’authentification des dépôts ;
- demande à
dpkgde les installer ; - 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 updatemet à 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 :
- rafraîchir les index ;
- regarder ce qui est disponible ;
- 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 updatelorsque 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
autoremoveou unfull-upgrade. - Préférez les backports à un mélange improvisé de Stable et Testing lorsqu’ils répondent au besoin.
- Utilisez
Signed-Byet des keyrings dédiés pour les dépôts tiers. - N’utilisez pas
--allow-unauthenticatedou 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 :
- APT consulte ses index locaux ;
- il détermine la version candidate de
nginx; - il calcule ses dépendances ;
- il choisit les versions compatibles ;
- il télécharge les archives nécessaires ;
- il vérifie leur cohérence avec les métadonnées authentifiées du dépôt ;
- il transmet les paquets à dpkg ;
- dpkg décompresse les fichiers ;
- les scripts de maintenance sont exécutés lorsque nécessaire ;
- les paquets sont configurés ;
- 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.
