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. Ressources non officielles : mentors.debian.net
6.1.5. 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.3. Commande apt-cache
6.4. Frontaux : aptitude, synaptic
6.4.1. aptitude
6.4.2. synaptic
6.5. Vérification d'authenticité des paquets
6.6. Mise à jour d'une distribution à la suivante
6.6.1. Démarche à suivre
6.6.2. Gérer les problèmes consécutifs à une mise à jour
6.7. Maintenir un système à jour
6.8. Mise à jour automatique
6.8.1. Configuration de dpkg
6.8.2. Configuration d'APT
6.8.3. Configuration de debconf
6.8.4. Gestion des interactions en ligne de commande
6.8.5. La combinaison miracle
6.9. 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 Package Tool (outil avancé pour les paquets). Ce que ce programme a d'« avancé », c'est la manière d'aborder la problématique des paquets. Il ne se contente pas de les évaluer un par un, mais les considère dans leur 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 » : c'est le fichier /etc/apt/sources.list qui décrira les différents emplacements (ou « sources ») publiant des paquets Debian. APT devra ensuite rapatrier la liste des paquets publiés par chacune de ces sources, ainsi que leurs en-têtes. Il réalise cette opération en téléchargeant les fichiers Packages.{gz,bz2,xz} (cas d'une source de paquets binaires) et Sources.{gz,bz2,xz} (cas d'une source de paquets sources) et en analysant leur contenu. 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 Mise à jour incrémentale).

6.1. Renseigner le fichier sources.list

6.1.1. Syntaxe

Le fichier /etc/apt/sources.list contient sur chaque ligne active une description de source, qui se décompose en 3 parties séparées par des blancs.
Le premier champ indique le type de la source :
  • « deb » pour des paquets binaires ;
  • « deb-src » pour des paquets sources.
Le deuxième champ indique l'URL de base de la source (combinée aux noms de fichier présents dans les fichiers Packages.gz, elle doit donner une URL complète valide) : 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:// pour indiquer une source accessible depuis un serveur web, ou par ftp:// pour une source disponible sur un serveur FTP. On trouvera aussi cdrom: pour les installations à partir de CD-Rom/DVD-Rom/Blu-ray, mais moins fréquemment, les méthodes d'installation par le réseau étant de plus en plus répandues.
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 ./ s'il n'y a pas de sous-répertoires — les paquets sont alors directement à l'URL spécifiée). 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 » — stable, testing, unstable), puis les composants ou sections à activer (sur un miroir Debian standard, ils seront à choisir parmi 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 standard du fichier sources.list pour un système fonctionnant avec la version Stable de Debian :

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

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

## Miroir Debian

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

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

# Rétroportages vers stable
deb http://ftp.debian.org/debian jessie-backports main contrib non-free
deb-src http://ftp.debian.org/debian jessie-backports main contrib non-free
Ce fichier liste toutes les sources de paquets associées à la version Jessie de Debian (la version Stable à l'heure où ces lignes sont écrites). Nous avons pris le parti de nommer jessie explicitement plutôt que d'utiliser son 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 n'est mis à jour que rarement (environ une fois tous les deux mois pour les mises à jour de stable). Les autres dépôts sont partiels (ils ne contiennent pas tous les paquets) mais contiennent 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 sur 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é

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 (qui est concentré sur un petit nombre de serveurs maintenus par l'équipe d'administrateurs systèmes 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 paquets) pour la distribution Stable.
Ce serveur peut aussi héberger des mises à jour de sécurité pour Testing, mais cela arrive plus rarement ; ces mises à jour atteignent le plus souvent Testing en suivant le cheminement régulier des paquets en provenance d'Unstable.

6.1.2.2. Mises à jour de la distribution stable

Les mises à jour de la distribution stable ne sont pas nécessairement liées à des problèmes de sécurité, mais elles sont tout de même considérées comme suffisamment importantes pour être mises à disposition des utilisateurs avant la prochaine publication d'une version stable mise à jour (point release).
Ce dépôt va typiquement contenir des correctifs pour des bogues critiques 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 spam de spamassassin, la base de données de virus de clamav, ou encore les données de changement d'heure de tous les fuseaux horaires (tzdata).
En pratique, il s'agit d'un sous-ensemble du dépôt proposed-updates, sélectionné avec soin par les gestionnaires de publication de stable.

6.1.2.3. Mises à jour proposées

Une fois publiée, la distribution Stable n'est mise à jour que tous les 2 mois environ. Le dépôt proposed-updates contient les mises à jour qui sont proposées à l'inclusion dans Stable, sous la supervision des gestionnaires de 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 jessie-proposed-updates qui est à la fois plus explicite et plus cohérent puisque wheezy-proposed-updates existe également (pour les mises à jour de Oldstable) :
deb http://ftp.debian.org/debian jessie-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 volontaires proposent parfois des recompilations des logiciels récents pour Stable, ce qui permet de restreindre une éventuelle instabilité à un petit nombre, bien choisi, de paquets.
Le dépôt stable-backports est dorénavant disponible sur les miroirs Debian standards, mais les rétroportages pour Squeeze sont toujours hébergés sur un serveur dédié (backports.debian.org), et ont besoin de l'entrée suivante dans le fichier sources.list :
deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free
Les rétroportages de stable-backports sont toujours 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 package/jessie-backports
$ sudo apt-get install -t jessie-backports package

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.2. Fichier /etc/apt/sources.list pour les utilisateurs de Debian Testing/Unstable

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

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

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

# Mises à jour de sécurité
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ testing/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ testing/updates 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 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 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 http://ftp.fr.debian.org/debian experimental main contrib non-free

6.1.4. Ressources non officielles : mentors.debian.net

Il y a de nombreuses sources non officielles de paquets Debian préparés par des utilisateurs avancés qui ont recompilé certains logiciels (Ubuntu a rendu cette pratique populaire avec leur service d'archive personnelle de paquets — 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.5. 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 encadré VOCABULAIRE Cache) pour limiter le trafic induit par les multiples téléchargements.
APT peut être configuré pour utiliser un proxy « standard » (voir Section 6.2.4, « Options de configuration » pour la configuration d'APT, et 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 maintenue 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 via inetd (voir Section 9.6, « Le super-serveur inetd ») et nécessite que les utilisateurs ajustent leur fichier sources.list pour qu'il pointe vers le serveur approx :
# Fichier sources.list utilisant un serveur approx
deb http://apt.falcot.com:9999/security jessie/updates main contrib non-free
deb http://apt.falcot.com:9999/debian jessie main contrib non-free