Provided by: apt_3.0.0_amd64 

NOM
apt_preferences - Fichier de contrôle des préférences pour APT
DESCRIPTION
Le fichier d'APT, /etc/apt/preferences et les fichiers fragments situés dans le dossier
/etc/apt/preferences.d/, peuvent être utilisés 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 priorité la plus haute. Le fichier preferences outrepasse les priorités assignées par
défaut aux versions des paquets : ainsi l'utilisateur peut 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
preferences n'influe pas sur le choix des exemplaires, seulement sur le choix de la version.
Les préférences sont un outil puissant pour les administrateurs système mais peuvent devenir leur pire
cauchemar si elles sont utilisées sans précautions. APT ne remettra pas en doute les réglages choisis.
Des valeurs erronées pourront alors conduire à des paquets non installables ou à des décisions
incorrectes lors de la mise à jour des paquets. Des problèmes supplémentaires peuvent survenir si des
distributions multiples sont mélangées sans une bonne compréhension des paragraphes qui suivent.
Veuillez noter que les fichiers du répertoire /etc/apt/preferences.d sont analysés par ordre
alphanumérique ascendant, doivent avoir l'extension "pref" ou aucune extension et ne peuvent contenir que
des caractères alphanumériques, des tirets (-), des caractères de soulignement (_) et des points (.).
Dans le cas contraire, APT affichera un avertissement indiquant qu'il a ignoré un fichier si celui-ci ne
correspond par à un motif défini dans Dir::Ignore-Files-Silently (les fichiers correspondant à cette
variable de configuration étant, eux, ignorés silencieusement).
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. Il est possible de distinguer une distribution, la « target release » (distribution par
défaut) qui reçoit une priorité plus haute que celle des autres distributions. Cette distribution par
défaut peut être définie sur la ligne de commande de apt-get ou dans le fichier de configuration d'APT,
/etc/apt/apt.conf. Notez que cette priorité est plus forte que toute priorité générale définie dans le
fichier /etc/apt/preferences décrit plus loin, mais pas sur des paquets spécialement épinglés. 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 :
priorité 1
pour les versions issues d'archives dont le fichier Release comporte la mention « NotAutomatic:
yes », mais pas « ButAutomaticUpgrades: yes » comme l'archive experimental de Debian, ainsi que comme
les versions qui ne sont pas par étapes sur ces systèmes.
une priorité égale à 100
pour les versions issues d'archives dont le fichier Release comporte la mention « NotAutomatic: yes »
et « ButAutomaticUpgrades: yes » comme l'archive des rétroportages de Debian depuis
squeeze-backports.
une priorité égale à 500
est affectée aux versions qui n'appartiennent pas à la distribution par défaut.
une priorité égale à 990
est affectée aux versions qui appartiennent à la distribution par défaut.
La priorité la plus élevée dont la description correspond à la version est affectée à la version.
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 à toute version non installée. Cela à
l'exception des versions issues des archives qui ont la mention « NotAutomatic: yes » dans leur fichier
Release, qui auront alors une priorité égale à 1 ou à 100 si elles sont également marquées avec
« ButAutomaticUpgrades: yes ».
Puis APT applique les règles suivantes pour déterminer la version du paquet qu'il faut installer (par
ordre de priorité) :
• Ne jamais revenir en arrière, sauf si la priorité d'une version disponible dépasse 1000. « Revenir en
arrière » signifie installer une version moins récente que la version installée. Il faut noter
qu'aucune des priorités par défaut n'excède 1000 ; de telles valeurs ne peuvent être définies que
dans le fichier des préférences. Notez aussi qu'il est risqué de revenir en arrière.
• Installer la version qui possède la priorité la plus haute.
• Quand deux (ou plus) versions ont la même priorité, installer la version la plus récente
(c'est-à-dire celle dont le numéro de version est le plus grand).
• Quand deux (ou plus) versions ont la même priorité et le même numéro de version, mais soit les
paquets diffèrent par certaines métadonnées, soit l'option --reinstall a été donnée, installer la
version qui n'est pas installée.
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.
Mises à jour par étapes
APT interprète un champ intitulé Phased-Update-Percentage qui peut être utilisé pour contrôler la mise en
œuvre d'une nouvelle version. C'est un entier entre 0 et 100.
L'éligibilité d'un système à une mise à jour par étapes est déterminée par la génération d'un nombre
aléatoire avec le nom du paquet source, le numéro de version et le /etc/machine-id, puis en calculant un
entier dans la plage [0, 100]. Si cet entier est supérieur au Phased-Update-Percentage, la version est
épinglée à 1 et donc retenue. Autrement, les règles normales de la politique s'appliquent.
Si vous avez plusieurs systèmes et voulez qu'ils reçoivent le même ensemble de mises à jour, vous pouvez
régler APT::Machine-ID à un UUID tel que ces systèmes auront les mêmes étapes de mise à jour, ou définir
APT::Get::Never-Include-Phased-Updates ou APT::Get::Always-Include-Phased-Updates à « true » de sorte
qu'APT ne prenne jamais ou toujours en considération les mises à jour par étapes (respectivement).
Conséquences des préférences d'APT
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.
• La forme particulière affecte une priorité (Pin-Priority) à un paquet précis, à une version précise
ou à un intervalle spécifiant plusieurs versions. Par exemple, l'entrée suivante affecte une priorité
haute à toutes les versions du paquet perl dont le numéro de version commence par 5.32.
Package: perl
Pin: version 5.32*
Pin-Priority: 1001
Depuis la version 2.9.9, vous pouvez aussi épingler par une version de la source :
Package: perl
Pin: source-version 5.32*
Pin-Priority: 1001
• La forme générale affecte une priorité à toutes les versions d'un paquet dans une distribution donnée
(c'est-à-dire, à toutes les versions d'un paquet qui sont listées dans un fichier Release), ou à
toutes les versions d'un paquet provenant d'un site Internet identifié par un nom complètement
qualifié.
Cette forme générale des entrées du fichier des préférences s'applique seulement aux groupes de
paquets. Par exemple, l'entrée suivante affecte une priorité haute à toutes les versions disponibles
dans le site local.
Package: *
Pin: origin ""
Pin-Priority: 999
Il est important de noter que le mot-clé utilisé ici est « origin » qui peut servir à indiquer un nom
d'hôte. Dans l'exemple qui suit, une haute priorité est donnée à toutes les versions disponibles sur
le serveur identifié par le nom d'hôte « ftp.de.debian.org ».
Package: *
Pin: origin "ftp.de.debian.org"
Pin-Priority: 999
Veuillez noter que le mot-clé utilisé ici, origin, ne doit pas être confondu avec l'Origine d'une
distribution indiquée dans un fichier Release. Ce qui suit l'étiquette « Origin: » dans un fichier
Release n'est pas une adresse Internet mais le nom d'un auteur ou d'un distributeur, comme « Debian »
ou « Ximian ».
L'entrée suivante affecte une priorité basse à toutes les versions d'un paquet appartenant à toute
distribution dont le nom d'« Archive » est unstable.
Package: *
Pin: release a=unstable
Pin-Priority: 50
L'entrée suivante affecte une priorité haute à toutes les versions d'un paquet appartenant à toute
distribution dont le nom de code est forky.
Package: *
Pin: release n=forky
Pin-Priority: 900
L'entrée suivante affecte une priorité haute à toutes les versions d'un paquet appartenant à toute
distribution dont le nom d'« Archive » est stable et dont le numéro de « Version » est 13.
Package: *
Pin: release a=stable, v=13
Pin-Priority: 500
L'effet de l'opérateur virgule est identique à un « and » logique : toutes les conditions doivent être
satisfaites pour que l'épinglage corresponde. Il existe une exception : pour chaque type de condition
(telles que deux conditions « a »), seule la dernière condition est vérifiée.
Correspondance de paquets dans le champ Package
Le champ Package définit les paquets auxquels s'applique un épinglage. Le champ peut contenir un nom de
paquet binaire, un nom de paquet source (préfixé par « src: »), une expression glob(7) ou une expression
rationnelle (entouré de barres obliques). Plusieurs noms de paquet, expressions glob(7) ou expressions
rationnelles peuvent être listés séparés par des espaces, auquel cas l'entrée correspondra à tous les
paquets correspondants.
Par défaut, seuls les paquets de l'architecture native peuvent correspondre. Pour que des paquets
binaires de toutes les architectures correspondent, ajoutez le suffixe :any au nom de paquet. Il est
aussi possible de limiter la correspondance à une architecture particulière en ajoutant le nom de
l'architecture au nom du paquet, séparé par le caractère deux-points.
Dans l'exemple suivant, une expression glob(7) et une expression rationnelle sont utilisées pour affecter
une priorité de 500 à tous les paquets d'experimental dont le nom commence par gnome (en tant
qu'expression de type glob(7)) ou contient le mot kde (sous forme d'une expression rationnelle POSIX
étendue, entourée de barres obliques).
Package: gnome* /kde/
Pin: release a=experimental
Pin-Priority: 500
La règle pour ces expressions est qu'elles peuvent prendre place dès que la chaîne correspondante est
trouvée. Ainsi, l'épinglage qui suit affecte une priorité de 990 à tous les paquets d'une version de
distribution commençant par plucky.
Package: *
Pin: release n=plucky*
Pin-Priority: 990
Si une expression rationnelle est rencontrée dans un champ Package, le comportement sera celui qui aurait
eu lieu si cette expression était remplacée par la liste de tous les paquets auxquels elle correspond. Il
n'est pas encore décidé si cela sera conservé dans le futur : il est donc conseillé d'utiliser des
épinglages avec caractères génériques en premier afin qu'ils soient remplacés par des épinglages plus
spécifiques. Le motif « * » dans un champ Package n'est pas considéré comme une expression glob(7) en
soi.
Pour épingler tous les binaires produits par le paquet source apt de cette version d'APT à une valeur
de 990, vous pouvez entrer :
Package: src:apt
Pin: version 3.0.0
Pin-Priority: 990
L'épinglage de paquet source peut être combiné avec des expressions rationnelles et des motifs glob(7),
et peut aussi porter sur une architecture binaire.
Par exemple, nous allons épingler à 990 tous les binaires pour toutes les architectures produites par un
paquet source contenant apt dans son nom :
Package: src:*apt*:any
Pin: version *
Pin-Priority: 990
Le suffixe :any assure de sélectionner les paquets binaires de toutes les architectures. Sans ce suffixe,
APT présume implicitement le suffixe :native qui ne sélectionne que les paquets de l'architecture native.
Méthode d'interprétation des priorités par APT
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 à peu prè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.
P = 0
a un comportement indéfini, ne pas l'utiliser.
La première entrée de forme particulière correspondant à une version disponible de paquet détermine la
priorité de la version du paquet. S'il n'en existe pas, la priorité du paquet est définie comme la plus
haute de toutes les priorités par les entrées de forme générale correspondant à la version. Les entrées
définies en utilisant des motifs dans le champ Pin autre que « * » sont traitées comme des entrées de
forme générale.
Supposons par exemple que le fichier des préférences contienne les trois entrées décrites ci-dessous :
Package: perl
Pin: version 5.32*
Pin-Priority: 1001
Package: *
Pin: origin ""
Pin-Priority: 999
Package: *
Pin: release unstable
Pin-Priority: 50
Alors :
• La version la plus récente du paquet perl sera installé pour autant que son numéro de version
commence par 5.32. Si l'une des versions 5.32* existe et si la version installée est une version
5.36*, il y aura un retour en arrière.
• Les versions des paquets (autres que perl) disponibles dans le site local ont priorité sur les autres
versions, même celles appartenant à la distribution par défaut.
• La version d'un paquet dont l'origine n'est pas le site local mais un site Internet mentionné dans
sources.list(5) et qui appartient à une distribution unstable, ne sera installée que si aucune
version du paquet n'est déjà installée.
Détermination de la version des paquets et des propriétés des distributions
Chaque source indiqué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/nom-distribution/composant/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/nom-distribution, par exemple,
.../dists/stable/Release, ou .../dists/trixie/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: ou Suite:
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 Codename:
indique le nom de code auquel appartiennent tous les paquets situés dans les répertoires. Par
exemple, la ligne Codename: forky indique que tous les paquets dans les répertoires situés sous le
répertoire parent du fichier Release appartiennent à la version portant le nom de code forky.
Indiquer cette valeur dans le fichier des préférences demanderait cette ligne :
Pin: release n=forky
la ligne Version:
indique la version de la distribution. Par exemple, les paquets dans les répertoires peuvent
appartenir à la distribution Debian version 13. 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 une de ces lignes :
Pin: release v=13
Pin: release a=stable, v=13
Pin: release 13
La ligne Component:
nomme un composant qui indique le type de licence associée 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 une étiquette 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 indiquées dans 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 débutant par le mot
Explanation:. Cela permet des commentaires.
EXEMPLES
Méthode pour 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.
Explanation: Désinstaller ou ne pas installer de versions de paquet
Explanation: d'origine Debian 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
Méthode pour 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
Suivre l'évolution d'une version par son nom de code
Le fichier des préférences suivant affecte une priorité plus haute que la priorité par défaut (500) à
tous les exemplaires appartenant à la version portant le nom de code indiqué et une priorité
prohibitivement basse à tous les exemplaires appartenant à d'autres distributions Debian. Veuillez noter
qu'avec ce fichier de préférences, APT suivra la transformation d'une version testing en stable puis
oldstable. Si, au contraire, vous souhaitez suivre la version testing, vous devriez utiliser un des
exemples précédents.
Explanation: Ne pas installer des exemplaires d'origine Debian
Explanation: sauf ceux de la distribution forky ou sid
Package: *
Pin: release n=forky
Pin-Priority: 900
Explanation: Debian unstable porte toujours le nom sid
Package: *
Pin: release n=sid
Pin-Priority: 800
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 forky 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 sid pour mettre à niveau le
paquet spécifié ; Par la suite, apt-get upgrade mettra le paquet à jour avec la plus récente version dans
forky si elle est plus récente que la version installée ou avec la plus récente version dans sid si elle
est plus récente que la version installée.
apt-get install paquet/sid
FICHIERS
/etc/apt/preferences
Fichier des préférences. C'est dans ce fichier qu'on peut faire de l'épinglage (pinning)
c'est-à-dire, choisir d'obtenir des paquets d'une source distincte ou d'une distribution différente.
Élément de configuration : Dir::Etc::Preferences.
/etc/apt/preferences.d/
Fragments de fichiers pour la préférence des versions. Élément de configuration :
Dir::Etc::PreferencesParts.
VOIR AUSSI
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
BOGUES
Page des bogues d'APT[1]. Si vous souhaitez signaler un bogue à propos d'APT, veuillez lire
/usr/share/doc/debian/bug-reporting.txt ou utiliser la commande reportbug(1).
TRADUCTEURS
Jérôme Marant, Philippe Batailler, Christian Perrier <bubulle@debian.org> (2000, 2005, 2009, 2010), bubu
et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr> (2004, 2017-2024) et l'équipe de traduction francophone
de Debian <debian-l10n-french@lists.debian.org>
Veuillez noter que cette traduction peut contenir des parties non traduites. Cela est volontaire, pour
éviter de perdre du contenu quand la traduction est légèrement en retard sur le contenu d'origine.
AUTEUR
Équipe de développement d'APT
NOTES
1. Page des bogues d'APT
https://bugs.debian.org/src:apt
APT 3.0.0 22 août 2024 APT_PREFERENCES(5)