apt_preferences

Nom

apt_preferences -- Un fichier de contrôle, utilisé par APT et indiquant des préférences

Description

Le fichier d'APT, /etc/apt/preferences, peut être utilisé pour choisir la version des paquets que l'on veut installer.

Quand le fichier sources.list(5) contient des références à plusieurs distributions (par exemple, stable et testing), plusieurs versions d'un paquet peuvent être installées. Apt affecte une priorité à chaque version disponible. La commande apt-get, tenant compte des contraintes de dépendance, installe la version qui possède la plus haute priorité. Le fichier des préférences annule les priorités assignées par défaut aux versions des paquets : ainsi l'utilisateur peut choisir choisir la version qu'il veut installer.

Si le fichier sources.list(5) contient, pour une même distribution, des références à plusieurs sites de téléchargement, il peut exister plusieurs exemplaires de la même version d'un paquet. Dans ce cas, apt-get télécharge l'exemplaire qui apparaît en premier dans le fichier sources.list(5) . Le fichier des préférences n'influe pas sur le choix des exemplaires.

Les priorités affectées par défaut

Quand le fichier des préférences n'existe pas, ou quand aucune entrée de ce fichier ne s'applique à une version précise, la priorité affectée à cette version est la priorité de la distribution à laquelle elle appartient. On peut distinguer une distribution et lui donner une priorité plus haute que celle des autres distributions : on l'appelle la distribution par défaut ou « target release » et elle peut être définie sur la ligne de commande de apt-get ou dans le fichier de configuration d'APT, /etc/apt/apt.conf. Par exemple :

apt-get install -t testing paquet
APT::Default-Release "stable";

Quand une distribution par défaut a été indiquée, APT utilise l'algorithme suivant pour déterminer la priorité des versions d'un paquet :

une priorité égale à 100

est affectée à la version déjà installée (si elle existe).

une priorité égale à 500

est affectée aux versions qui ne sont pas installées et qui n'appartiennent pas à la distribution par défaut.

une priorité égale à 990

est affectée aux versions qui ne sont pas installées et qui appartiennent à la distribution par défaut.

Quand aucune distribution par défaut n'a été indiquée, APT affecte simplement une priorité égale à 100 à toute version installée d'un paquet et une priorité égale à 500 à tout version non installée.

Puis APT applique les règles suivantes pour déterminer la version du paquet qu'il faut installer (elles sont listées par ordre de priorité) :

En général, la version installée d'un paquet (priorité 100) n'est pas aussi récente que les versions disponibles dans les sources listées dans le fichier sources.list(5) (priorité 500 ou 990). Et donc le paquet sera mis à niveau avec la commande : apt-get install paquet ou apt-get dist-upgrade.

La version installée d'un paquet peut être - rarement - plus récente que tout autre version disponible. Les commandes apt-get install paquet ou apt-get upgrade ne provoquent pas de retour en arrière.

Parfois, la version installée d'un paquet est plus récente que la version appartenant à la distribution par défaut, mais moins récente que la version appartenant à une autre distribution. Une telle version sera mise à niveau par les commandes apt-get install paquet ou apt-get upgrade car au moins l'une des versions disponibles possède une plus haute priorité que celle de la version installée.

Conséquences des préférences

Le fichier des préférences permet à l'administrateur-système de contrôler l'affectation des priorités. Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Ces entrées peuvent avoir deux formes, une forme particulière et une forme générale.

Comment APT interprète-t-il les priorités ?

Les priorités (P) indiquées dans le fichier des préférences doivent être des entiers positifs ou négatifs. Ils sont interprétés comme suit :

P > 1000

Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.

990 < P <=1000

La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.

500 < P <=990

La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.

100 < P <=500

La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.

0 <= P <=100

La version sera installée si aucune version du paquet n'est installée.

P < 0

Cette priorité empêche l'installation de la version.

Si l'une des entrées de forme particulière correspond à la version disponible d'un paquet, la première entrée trouvée détermine la priorité de cette version. S'il n'en existe pas, et si l'une des entrées de forme générale correspond à la version disponible d'un paquet, la première entrée trouvée détermine la priorité.

Supposons par exemple que le fichier des préférences contienne les trois entrées décrites ci-dessous :

Package: perl
Pin: version 5.8*
Pin-Priority: 1001

Package: *
Pin: origin ""
Pin-Priority: 999

Package: *
Pin: release unstable
Pin-Priority: 50
Alors :

Détermination de la version des paquets et des propriétés des distributions

Chaque source listée dans le fichier sources.list(5) doit fournir les fichiers Packages et Release qui décrivent les paquets disponibles à cet endroit.

Le fichier Packages se trouve normalement dans le répertoire .../dists/dist-name/component/arch, par exemple, .../dists/stable/main/binary-i386/Packages. Il consiste en entrées composées de lignes, une pour chaque paquet disponible dans le répertoire. Seules deux lignes des entrées sont pertinentes pour la détermination des priorités :

La ligne Package:

donne le nom du paquet

La ligne Version:

donne le numéro de version du paquet

Le fichier Release se trouve normalement dans le répertoire .../dists/dist-name, par exemple, .../dists/stable/Release, ou .../dists/woody/Release. Il consiste en une seule entrée composée de plusieurs lignes qui s'applique à tous les paquets situés dans les répertoires sous le répertoire parent. Contrairement au fichier Packages, presque toutes les lignes du fichier Release sont pertinentes pour déterminer les priorités :

La ligne Archive:

nomme l'archive à laquelle appartiennent tous les paquets situés dans les répertoires. Par exemple, la ligne Archive: stable indique que tous les paquets dans les répertoires situés sous le répertoire parent du fichier Release appartiennent à l'archive stable. Indiquer cette valeur dans le fichier des préférences demanderait cette ligne :

Pin: release a=stable
La ligne Version:

indique la version de la distribution. Par exemple, les paquets dans les répertoires peuvent appartenir à la distribution Debian GNU/Linux version 3.0. Il n'y a pas de numéro de version pour les distributions testing et unstable car elles n'ont pas encore été publiées. Indiquer cette valeur dans le fichier des préférences demanderait ces lignes :

Pin: release v=3.0
Pin: release a=stable v=3.0
Pin: release 3.0
La ligne Component:

nomme un composant qui indique le type de licence associé aux paquets situés dans les répertoires sous le fichier Release. Par exemple, la ligne Component: main indique que tous les exemplaires dans les répertoires appartiennent au composant main, c'est-à-dire que leur licence est en accord avec les Directives Debian pour le logiciel libre. Indiquer ce composant dans le fichier des préférences demanderait cette ligne :

Pin: release c=main
La ligne Origin:

nomme l'origine des paquets situés dans les répertoires sous le fichier Release. En général, c'est Debian. Indiquer cette origine dans le fichier des préférences demanderait cette ligne :

Pin: release o=Debian
La ligne Label:

indique un label pour les paquets qui se trouvent dans les répertoires sous le fichier Release. En général, c'est Debian. Indiquer cette origine dans le fichier des préférences demanderait cette ligne :

Pin: release l=Debian

Tous les fichiers Packages et Release récupérés dans des sources listées par le fichier sources.list(5) sont conservés dans le répertoire /var/lib/apt/lists ou dans le fichier spécifié par la variable Dir::State::Lists dans le fichier apt.conf. Par exemple, le fichier debian.lcs.mit.edu_debian_dists_unstable_contrib_binary-i386_Release contient le fichier Release du site debian.lcs.mit.edu, architecture binary-i386 et composant contrib de la distribution unstable.

Lignes facultatives dans le fichier des préférences

Toute entrée du fichier des préférences peut commencer par une ou plusieurs lignes contenant le mot Explanation:. Cela permet des commentaires.

La ligne Pin-Priority: d'une entrée est facultative. Si elle n'existe pas, APT affecte une priorité inférieure de 1 à la valeur spécifiée sur une ligne commençant par Pin-Priority: release ....

Exemples

Comment suivre Stable ?

Le fichier des préférences suivant affecte une priorité plus haute que la priorité par défaut (500) à tous les exemplaires appartenant à la distribution stable et une priorité prohibitivement basse à tous les exemplaires appartenant à d'autres distributions Debian.

Explication : Ne pas installer des exemplaires d'origine Debian
Explication : sauf ceux de la distribution stable
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Avec le fichier des préférences ci-dessus et un fichier sources.list(5) adéquat, les commandes suivantes utiliseront les versions les plus récentes de stable pour faire la mise à niveau :

apt-get install paquet
apt-get upgrade
apt-get dist-upgrade

La commande suivante utilisera la version la plus récente de la distribution testing pour mettre à niveau le paquet spécifié ; cependant les mises à niveau ultérieures du paquet ne se feront pas à moins de relancer la commande.

apt-get install paquet/testing

Comment suivre Testing ou Unstable ?

Le fichier des préférences suivant affecte une priorité haute aux versions des paquets appartenant à la distribution testing, une priorité moindre aux versions appartenant à la distribution unstable et une priorité prohibitivement basse aux versions appartenant à d'autres distributions Debian.

Package: *
Pin: release a=testing
Pin-Priority: 900

Package: *
Pin: release a=unstable
Pin-Priority: 800

Package: *
Pin: release o=Debian
Pin-Priority: -10

Avec un fichier sources.list(5) approprié et le fichier des préférences ci-dessus, les commandes suivantes utiliseront les versions les plus récentes de testing pour faire la mise à niveau :

apt-get install paquet
apt-get upgrade
apt-get dist-upgrade

La commande suivante utilisera la version la plus récente de la distribution unstable pour mettre à niveau le paquet spécifié ; Par la suite, apt-get upgrade mettra le paquet à jour avec la plus récente version dans testing si elle est plus récente que la version installée ou avec la plus récente version dans unstable si elle est plus récente que la version installée.

apt-get install paquet/unstable

See Also

apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)

Bogues

Voyez la page concernant les bogues de APT. Si vous voulez rapporter un bogue, consultez le texte /usr/share/doc/debian/bug-reporting.txt ou utilisez la commande reportbug(1) .

Auteur

APT a été écrit par l'équipe APT .

Traduction

Philippe Batailler. 2003.