Product SiteDocumentation Site

Chapitre 6. Maintenance et mise à jour : les outils APT

6.1. Renseigner le fichier sources.list
6.1.1. Syntaxe
6.1.2. Dépôts pour les utilisateurs de Stable
6.1.3. Dépôts pour les utilisateurs de Testing/Unstable
6.1.4. Utilisation de miroirs alternatifs
6.1.5. Ressources non officielles : mentors.debian.net
6.1.6. Mandataire avec cache (proxy-cache) pour paquets Debian
6.2. Commandes aptitude, apt-get et apt
6.2.1. Initialisation
6.2.2. Installation et suppression
6.2.3. Mise à jour
6.2.4. Options de configuration
6.2.5. Gérer les priorités associées aux paquets
6.2.6. Travailler avec plusieurs distributions
6.2.7. Suivi des paquets installés automatiquement
6.2.8. Motifs pour APT
6.3. Commande apt-cache
6.3.1. The apt-cache policy Command
6.4. The apt-file Command
6.5. Frontaux : aptitude, synaptic
6.5.1. aptitude
6.5.2. synaptic
6.6. Vérification d'authenticité des paquets
6.7. Mise à jour d'une distribution à la suivante
6.7.1. Démarche à suivre
6.7.2. Gérer les problèmes consécutifs à une mise à jour
6.7.3. Cleaning Up after an Upgrade
6.8. Maintenir un système à jour
6.9. Mise à jour automatique
6.9.1. Configuration de dpkg
6.9.2. Configuration d'APT
6.9.3. Configuration de debconf
6.9.4. Gestion des interactions en ligne de commande
6.9.5. La combinaison miracle
6.10. Recherche de paquets
Ce qui rend Debian si populaire auprès des administrateurs, c'est la facilité avec laquelle il est possible d'y installer des logiciels et de mettre à jour le système complet. Cet avantage unique est dû en grande partie au programme APT, outil dont les administrateurs de Falcot SA se sont empressés d'étudier les possibilités.
APT est l'abréviation de Advanced Packaging Tool (outil sophistiqué pour les paquets). Ce qui fait que le programme est « sophistiqué », c'est qu'il ne se contente pas d'évaluer un par un la problématique des paquets, mais il les considère comme un ensemble et réalise la meilleure combinaison possible de paquets en fonction de tout ce qui est disponible et compatible (au sens des dépendances).
APT a besoin qu'on lui fournisse une « liste de sources de paquets (dépôts) » : c'est le fichier /etc/apt/sources.list qui listera les différents emplacements publiant des paquets Debian. APT devra ensuite importer la liste des paquets publiés par chacune de ces sources. Il réalise cette opération en téléchargeant les fichiers Packages.xz ou une variante (tel que Packages.gz or .bz2 (qui utilise différentes méthodes de compressions) dans le cas d'une source de paquets binaires et en analysant son contenu. Dans le cas de la source d'une source de paquets, APT télécharge les fichiers Sources.xz ou une variante utilisant une méthode de compression différente. Lorsque l'on dispose déjà d'une copie ancienne de ces fichiers, APT est capable de les mettre à jour en ne téléchargeant que les différences (voir encadré ASTUCE Mises à jour incrémentale).

6.1. Renseigner le fichier sources.list

6.1.1. Syntaxe

Chaque ligne active du fichier /etc/apt/sources.list représente un paquet source (dépôt) et est composée d'au moins trois parties séparées par des espaces. Pour une description complète du format de fichier et de la composition des entrées acceptées, voir sources.list(5).

Exemple 6.1. Exemples de format d'entrée dans /etc/apt/sources.list

deb url distribution composant1 composant2 composant3 [..] composantX
deb-src url distribution composant1 composant2 composant3 [..] composantX
Le premier champ indique le type de la source :
deb
source (dépôt) de paquets binaires
deb-src
source (dépôt) de paquets binaires
Le deuxième champ indique l'URL de base de la source. Combinée aux noms de fichier listés dans les fichiers Packages.gz, il doit donner un URL complet valable. Il peut s'agir d'un miroir Debian ou de toute autre archive de paquets mise en place par des tierces personnes. L'URL peut débuter par file:// pour indiquer une source locale située dans l'arborescence de fichiers du système, par http:// ou https:// pour indiquer une source accessible depuis un serveur web, ou par ftp:// ou ftps:// pour une source disponible sur un serveur FTP. L’URL peut aussi débuter par cdrom: pour les installations à partir de CD-Rom/DVD/Blu-ray, mais moins fréquemment, les méthodes d'installation par le réseau étant de plus en plus répandues. D’autres méthodes telles que like ssh:// ou tor+http(s):// sont gérées et sont décrites soit dans sources.list(5) ou dans leur documentation respective du paquet apt-transport-méthode.
La syntaxe du dernier champ dépend de la structure du dépôt. Dans les cas les plus simples, il s'agit juste d'indiquer le nom du sous-répertoire (terminé par une barre oblique) contenant la source désirée. Cela sera souvent ./ , indiquant l’absence sous-répertoires. Les paquets sont alors directement à l'URL spécifié. Mais le cas le plus courant concerne les dépôts structurés comme les miroirs Debian officiels, avec plusieurs distributions elles-mêmes subdivisées en composants. Dans ce cas, il faut indiquer la distribution choisie soit par son « nom de code » — voir la liste dans l'encadré COMMUNAUTÉ Bruce Perens, un leader chahuté — soit par sa « suite » (oldoldstable, oldstable, stable, testing, unstable), puis les composants à activer. Un miroir Debian standard fournit les composants main, contrib et non-free.
Les entrées cdrom décrivent les CD/DVD-Rom Debian dont vous disposez. Contrairement aux autres entrées, un CD-Rom n'est pas disponible en permanence puisqu'il faut l'insérer dans le lecteur et qu'un seul disque peut être lu à la fois — ces sources sont donc gérées un peu différemment. On ajoutera ces entrées à l'aide du petit programme apt-cdrom, habituellement invoqué avec le paramètre add. Ce dernier demande alors d'insérer le disque dans le lecteur et parcourt son contenu à la recherche de fichiers Packages, qu'il utilisera pour mettre à jour sa base de données de paquets disponibles (opération habituellement réalisée par la commande apt update). Dès lors, APT pourra vous demander d'insérer le disque en question s'il a besoin de l'un de ses paquets.

6.1.2. Dépôts pour les utilisateurs de Stable

Voici le contenu du fichier sources.list standard pour un système fonctionnant avec la version Stable de Debian :

Exemple 6.2. Fichier /etc/apt/sources.list pour les utilisateurs de Debian Stable

# Mises à jour de sécurité
deb http://security.debian.org/ bullseye/updates main contrib non-free
deb-src http://security.debian.org/ bullseye/updates main contrib non-free

## Miroir Debian

# Dépôt de base
deb http://deb.debian.org/debian bullseye main contrib non-free
deb-src http://deb.debian.org/debian bullseye main contrib non-free

# Mises à jour pour stable
deb http://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free

# Rétroportages vers stable
deb http://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src http://deb.debian.org/debian bullseye-backports main contrib non-free
Ce fichier liste toutes les sources de paquets associées à la version Bullseye de Debian (la version Stable à l'heure où ces lignes sont écrites). Nous avons pris le parti d’inscrire « bullseye » explicitement plutôt que d'utiliser ses alias « stable » (stable, stable-updates, stable-backports) pour éviter que le système change spontanément et hors de toute action de notre part lors de la prochaine publication d'une version stable.
La plupart des paquets vont provenir du « dépôt de base » qui contient tous les paquets, mais qui n'est mis à jour que rarement (environ une fois tous les deux mois pour une « publication intermédiaires ». Les autres dépôts sont partiels (ils ne contiennent pas tous les paquets) mais peuvent contenir des mises à jour de paquets qu'APT est capable d'installer. Les sections suivantes détaillent les principes régissant chacun de ces dépôts.
Il est à noter que lorsque la version souhaitée d'un paquet est disponible dans plusieurs dépôts, le paquet sera téléchargé sur le premier de ces dépôts mentionnés dans le fichier sources.list. C'est pour cette raison que l'on place généralement les sources non officielles à la fin du fichier.
Notons au passage que la plupart de ce que cette section mentionne à propos de Stable s'applique également à Oldstable, puisque cette dernière distribution est simplement une version Stable plus ancienne qui reste maintenue en parallèle.

6.1.2.1. Mises à jour de sécurité

Debian prend la sécurité au sérieux. Les vulnérabilités logicielles connues sont suivies dans le Security Bug Tracker et sont généralement corrigées dans un délai raisonnable. Les mises à jour de sécurité ne sont pas hébergées sur le réseau de miroirs Debian habituel, mais sur security.debian.org, un petit nombre de serveurs maintenus par les administrateurs système de Debian. Cette archive contient des mises à jour de sécurité préparées par l'équipe en charge de la sécurité dans Debian ou par les responsables de paquet pour la distribution Stable ou Oldstable.
Ce serveur peut aussi héberger des mises à jour de sécurité pour Testing, mais cela arrive plus rarement parce ces mises à jour atteignent cette suite en suivant le cheminement habituel des paquets en provenance d'Unstable.
Pour les problèmes graves, l'équipe de sécurité publie une annonce DSA (Debian Security Advisory) en même temps que la mise à jour de sécurité sur la liste de diffusion (archives).

6.1.2.2. Mises à jour de la distribution stable

Les mises à jour de Stable ne sont pas sensibles à la sécurité, mais sont jugées suffisamment importantes pour être transmises aux utilisateurs avant la prochaine version intermédiaire de Stable.
Ce dépôt va typiquement contenir des correctifs pour des bogues critiques ou graves qui n'ont pas pu être corrigés avant la publication officielle de la version stable de Debian ou qui ont été introduits par des mises à jour postérieures. En fonction de l'urgence ou non des différentes situations, il peut aussi contenir des mises à jour pour les paquets qui ont besoin d'évoluer au fil du temps, par exemple les règles de détection de pourriel de spamassassin, la base de données de virus de clamav, les données de changement d'heure de tous les fuseaux horaires (tzdata), la version ESR de Firefox (firefox-esr) ou les trousseaux de clés de chiffrement tels que debian-archive-keyring.
En pratique, ce dépôt est un sous-ensemble du dépôt proposed-updates, soigneusement sélectionné par les responsables de la publication stable. Toutes les mises à jour sont annoncées sur la liste de diffusion (archives) et feront partie de la prochaine version Stable.

6.1.2.3. Mises à jour proposées

Une fois publiée, la distribution Stable n'est mise à jour que tous les deux mois environ. Le dépôt proposed-updates est l’endroit où sont préparées les mises à jour attendues (sous la supervision des gestionnaires de la publication stable).
Les mises à jour de sécurité et les mises à jour de la distribution stable sont toujours incluses dans ce dépôt, mais pas uniquement ; les responsables de paquets ont aussi la possibilité de corriger des problèmes qui sont importants sans toutefois justifier une publication immédiate.
Notons qu'il est possible d'activer ce dépôt si l'on veut tester ces corrections avant leur publication officielle. Nous employons ici l'alias bullseye-proposed-updates qui est à la fois plus explicite et plus cohérent puisque buster-proposed-updates existe également (pour les mises à jour de Oldstable) :
deb https://deb.debian.org/debian bullseye-proposed-updates main contrib non-free

6.1.2.4. Rétroportages vers stable

Le dépôt stable-backports héberge des « rétroportages » de paquets (backports). Ce terme désigne un paquet d'un logiciel récent recompilé pour une distribution plus ancienne, généralement Stable.
Lorsque cette distribution commence à dater, de nombreux logiciels évoluent en amont et les nouvelles versions ne sont pas réintégrées dans la distribution Stable courante (qui n'est modifiée que pour prendre en compte les problèmes les plus critiques, comme les problèmes de sécurité). Comme les distributions Testing et Unstable peuvent être plus risquées, des responsables de paquets proposent parfois des recompilations de logiciels récents pour Stable, ce qui permet de restreindre une éventuelle instabilité à un petit nombre, bien choisi, de paquets. La page https://backports.debian.org fournit davantage d’informations.
Les rétroportages de stable-backports sont uniquement issus de paquets disponibles dans Testing, de manière à assurer que tous les rétroportages pourront être mis à jour vers la prochaine version stable lorsqu'elle sera disponible.
Bien que ce dépôt fournisse de nouvelles versions des paquets, APT ne va les installer que sur instruction explicite (ou si un paquet concerné a déjà été mis à jour vers une version rétroportée précédente) :
$ sudo apt-get install paquet/bullseye-backports
$ sudo apt-get install -t bullseye-backports paquet

6.1.3. Dépôts pour les utilisateurs de Testing/Unstable

Voici un fichier sources.list standard pour un système qui fonctionne avec la version Testing ou Unstable de Debian :

Exemple 6.3. Fichier /etc/apt/sources.list pour les utilisateurs de Debian Testing/Unstable

# Unstable
deb https://deb.debian.org/debian unstable main contrib non-free
deb-src https://deb.debian.org/debian unstable main contrib non-free

# Testing
deb https://deb.debian.org/debian testing main contrib non-free
deb-src https://deb.debian.org/debian testing main contrib non-free

# Mises à jour de sécurité pour Testing
deb http://security.debian.org/ testing-security main contrib non-free
deb-src http://security.debian.org/ testing-security main contrib non-free

# Stable
deb https://deb.debian.org/debian stable main contrib non-free
deb-src https://deb.debian.org/debian stable main contrib non-free

# Mises à jour de sécurité pour Stable
deb http://security.debian.org/ stable-security main contrib non-free
deb-src http://security.debian.org/ stable-security main contrib non-free
Avec ce fichier sources.list, APT installera des paquets depuis Unstable. Si cela n'est pas souhaitable, il convient d'utiliser l'option de configuration APT::Default-Release (voir la Section 6.2.3, « Mise à jour ») pour indiquer à APT de prendre les paquets dans une autre distribution (vraisemblablement Testing dans ce cas).
Il est parfaitement raisonnable d'inclure tous ces dépôts même si un seul suffirait. Les utilisateurs de Testing apprécieront la possibilité de choisir manuellement un paquet corrigé dans Unstable lorsque sa version dans Testing est affectée par un bogue pénible. À l'opposé, les utilisateurs d'Unstable qui découvrent des régressions inattendues pourront rétrograder certains paquets vers la version présente dans Testing, qui devrait fonctionner.
L'inclusion Stable est sujette à débat, mais elle donne souvent accès à des paquets qui ont été supprimés des versions de développement. Elle permet également de profiter des dernières mises à jour des paquets qui n'ont pas encore été modifiés depuis la publication de la dernière version stable.

6.1.3.1. Le dépôt Experimental

L'archive de paquets Experimental, présente sur tous les miroirs Debian, contient des paquets qui n'ont pas encore leur place dans la version Unstable pour cause de qualité insuffisante — ce sont fréquemment des versions de développement ou des pré-versions (alpha, bêta, release candidate...) des logiciels. Il arrive également qu'un paquet y soit envoyé après avoir subi des changements importants, potentiellement sources de problèmes. Le mainteneur cherche alors à débusquer ceux-ci avec l'aide des utilisateurs avancés capables de gérer les soucis importants. Après cette première phase, le paquet passe dans Unstable, au public beaucoup plus vaste, et où il subira donc des tests de bien plus grande envergure.
On réservera donc Experimental aux utilisateurs qui n'ont pas peur de casser leur système puis de le réparer. Cette distribution peut quand même permettre de rapatrier ponctuellement un paquet que l'on tient à essayer ou utiliser. C'est d'ailleurs la logique standard que Debian lui associe, puisque son ajout dans le fichier sources.list d'APT n'entraîne pas l'emploi systématique des paquets qui s'y trouvent. La ligne qu'il convient d'ajouter est la suivante :
deb https://deb.debian.org/debian experimental main contrib non-free

6.1.4. Utilisation de miroirs alternatifs

Les exemples sources.list de ce chapitre concernent les référentiels de paquets hébergés dans deb.debian.org. Ces URL vous redirigeront vers des serveurs proches de vous et gérés par des réseaux de diffusion de contenu (CDN) dont le rôle principal est de stocker plusieurs copies des fichiers à travers le monde et de les livrer le plus rapidement possible aux utilisateurs. Les entreprises CDN avec lesquelles Debian travaille sont des partenaires Debian qui offrent leurs services gratuitement à Debian. Bien qu’aucun de ces serveurs ne soit sous le contrôle direct de Debian, le fait que l’ensemble de l’archive soit verrouillé par des signatures GPG fait que ce cela ne cause pas de problème.
Les utilisateurs exigeants qui ne sont pas satisfaits des performances de deb.debian.org peuvent essayer de trouver un meilleur miroir dans la liste officielle des miroirs :
Mais lorsque vous ne savez pas quel miroir vous convient le mieux, cette liste n'est pas d'une grande utilité. Heureusement pour vous, Debian maintient des entrées DNS de la forme ftp.country-code.debian.org (par exemple ftp.us.debian.org pour les États-Unis, ftp.fr.debian.org pour la France, etc.) qui couvrent de nombreux pays et qui pointent vers un (ou plusieurs) des meilleurs miroirs disponibles dans ce pays.
Comme alternative à deb.debian.org, il y avait auparavant httpredir.debian.org. Ce service identifiait un miroir proche de vous (parmi la liste des miroirs officiels, en utilisant principalement la localisation GeoIP) et redirigeait les requêtes d’APT vers ce miroir. Ce service est obsolète pour des raisons de fiabilité et maintenant httpredir.debian.org fournit le même service basé sur le CDN que deb.debian.org.

6.1.5. Ressources non officielles : mentors.debian.net

Il y a de nombreuses sources non officielles de paquets Debian préparés par des utilisateurs compétents qui ont recompilé certains logiciels (Ubuntu a rendu cette pratique populaire avec leur service d'archive personnelle de paquets, PPA— Personal Package Archive), par des programmeurs qui rendent leur projet disponible pour tous, et même par des développeurs Debian qui proposent des pré-versions de leur paquet en ligne.
Signalons également l'existence du site mentors.debian.net, qui regroupe des paquets sources réalisés par des prétendants au statut de développeur Debian officiel ou par des volontaires souhaitant créer des paquets Debian sans passer par ce processus d'intégration. Ces paquets sont donc fournis sans aucune garantie de qualité ; prenez garde à vous assurer de leur origine et intégrité, puis à bien les tester avant d'envisager de les déployer.
Installer un paquet revient à donner les droits administrateur à son concepteur, car il décide du contenu des scripts d'initialisation qui sont exécutés sous cette identité. Les paquets officiels Debian sont réalisés par des volontaires cooptés et examinés, capables de sceller leurs paquets pour en vérifier l'origine et l'intégrité.
Mais méfiez-vous a priori d'un paquet dont l'origine est incertaine et qui n'est pas hébergé sur un des serveurs officiels du projet Debian : évaluez le degré de confiance que vous accordez au concepteur et vérifiez l'intégrité du paquet.

6.1.6. Mandataire avec cache (proxy-cache) pour paquets Debian

Lorsqu'un réseau complet de machines est configuré pour télécharger les mêmes paquets mis à jour depuis le même serveur distant, tout administrateur sait qu'il serait utile d'utiliser un mandataire (proxy) configuré comme un cache (voir l’encadré VOCABULAIRE Cache) pour limiter le trafic induit par les multiples téléchargements.
APT peut être configuré pour utiliser un proxy « standard » (voir la Section 6.2.4, « Options de configuration » pour la configuration d'APT et la Section 11.6, « Mandataire HTTP/FTP » pour la configuration du proxy lui-même), mais l'écosystème Debian offre de meilleures options pour ce problème. Les logiciels présentés dans cette section sont dédiés à cette tâche et sont souvent plus efficaces qu'un proxy générique puisqu'ils peuvent tirer parti de la structure spécifique des dépôts APT (par exemple, ils peuvent savoir quand un fichier devient obsolète et ainsi ajuster la durée pendant laquelle ce fichier est conservé).
apt-cacher et apt-cacher-ng fonctionnent comme des mandataires standards. Le fichier sources.list d'APT reste inchangé, mais APT est configuré pour utiliser ces logiciels comme mandataires lors des requêtes sortantes.
À l'opposé, approx se comporte comme un serveur HTTP qui servirait de miroir pour d'autres dépôts externes, rendus accessibles dans ses URL de plus haut niveau. La correspondance entre ces répertoires de premier niveau et les adresses distantes des dépôts est enregistrée dans le fichier de configuration /etc/approx/approx.conf :
# <name> <repository-base-url>
debian   http://ftp.debian.org/debian
security http://security.debian.org
Par défaut, approx fonctionne avec le port 9999 à l’aide d’un socket de systemd et nécessite que les utilisateurs ajustent leur fichier sources.list pour qu'il pointe vers le serveur approx :
# Exemple de sources.list pointant vers un serveur approx local
deb http://localhost:9999/security bullseye-security main contrib non-free
deb http://localhost:9999/debian   bullseye main contrib non-free