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 annule 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 silencieusemennt).
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 :
priorité 1
une priorité égale à 100
une priorité égale à 500
une priorité égale à 990
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. 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é) :
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.
APT understands a field called Phased-Update-Percentage which can be used to control the rollout of a new version. It is an integer between 0 and 100.
A system's eligibility to a phased update is determined by seeding random number generator with the package source name, the version number, and /etc/machine-id, and then calculating an integer in the range [0, 100]. If this integer is larger than the Phased-Update-Percentage, the version is pinned to 1, and thus held back. Otherwise, normal policy rules apply.
In case you have multiple systems that you want to receive the same set of updates, you can set APT::Machine-ID to a UUID such that they all phase the same, or set APT::Get::Never-Include-Phased-Updates or APT::Get::Always-Include-Phased-Updates to true such that APT will never/always consider phased updates.
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.
Package: perl Pin: version 5.20* Pin-Priority: 1001
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 bookworm.
Package: * Pin: release n=bookworm 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 11.
Package: * Pin: release a=stable, v=11 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.
APT gére également l'épinglage (« pinning ») avec des expressions glob(7) et des expressions régulières entourées par des barres obliques. Par exemple, l'exemple qui suit affecte 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 format d'une expression régulière 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 hirsute.
Package: * Pin: release n=hirsute* Pin-Priority: 990
Si une expression régulière 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.
APT supports pinning by source packages. To pin by a source package, prepend "src:" to the package name.
For example, to pin all binaries produced by the apt source package of this APT's version to 990, you can do:
Package: src:apt Pin: version 2.1.20 Pin-Priority: 990
Source package pinning can be combined with regular expressions and glob patterns, and can also take a binary architecture.
For example, let's pin all binaries for all architectures produced by any source package containing apt in its name to 990:
Package: src:*apt*:any Pin: version * Pin-Priority: 990
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
990 <= P < 1000
500 <= P < 990
100 <= P < 500
0 < P < 100
P < 0
P = 0
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.20* Pin-Priority: 1001 Package: * Pin: origin "" Pin-Priority: 999 Package: * Pin: release unstable Pin-Priority: 50
Alors :
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/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:
la ligne Version:
Le fichier Release se trouve normalement dans le répertoire .../dists/nom-distribution, par exemple, .../dists/stable/Release, ou .../dists/bullseye/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:
Pin: release a=stable
la ligne Codename:
Pin: release n=bookworm
la ligne Version:
Pin: release v=11 Pin: release a=stable, v=11 Pin: release 11
La ligne Component:
Pin: release c=main
La ligne Origin:
Pin: release o=Debian
La ligne Label:
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.
Toute entrée du fichier des préférences peut commencer par une ou plusieurs lignes contenant le mot Explanation:. Cela permet des commentaires.
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: Ne pas installer des exemplaires d'origine Debian Explanation: 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
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
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 bookworm ou sid Package: * Pin: release n=bookworm 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 bookworm 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 bookworm 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
/etc/apt/preferences
/etc/apt/preferences.d/
apt-get(8) apt-cache(8) apt.conf(5) sources.list(5)
m[blue]Page des bogues d'APTm[][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).
Jérôme Marant, Philippe Batailler, Christian Perrier <bubulle@debian.org> (2000, 2005, 2009, 2010), É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.
Équipe de développement d'APT