APT_PREFERENCES(5) APT APT_PREFERENCES(5) NOM apt_preferences - Fichier de controle des preferences pour APT DESCRIPTION Le fichier d'APT, /etc/apt/preferences et les fichiers fragments situes dans le dossier /etc/apt/preferences.d/, peuvent etre utilises pour choisir la version des paquets que l'on veut installer. Quand le fichier sources.list(5) contient des references a plusieurs distributions (par exemple, stable et testing), plusieurs versions d'un paquet peuvent etre installees. APT affecte une priorite a chaque version disponible. La commande apt-get, tenant compte des contraintes de dependance, installe la version qui possede la priorite la plus haute. Le fichier preferences annule les priorites assignees par defaut aux versions des paquets : ainsi l'utilisateur peut choisir la version qu'il veut installer. Si le fichier sources.list(5) contient, pour une meme distribution, des references a plusieurs sites de telechargement, il peut exister plusieurs exemplaires de la meme version d'un paquet. Dans ce cas, apt-get telecharge l'exemplaire qui apparait 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 preferences sont un outil puissant pour les administrateurs systeme mais peuvent devenir leur pire cauchemar si elles sont utilisees sans precautions. APT ne remettra pas en doute les reglages choisis. Des valeurs erronees pourront alors conduire a des paquets non installables ou a des decisions incorrectes lors de la mise a jour des paquets. Des problemes supplementaires peuvent survenir si des distributions multiples sont melangees sans une bonne comprehension des paragraphes qui suivent. Veuillez noter que les fichiers du repertoire /etc/apt/preferences.d sont analyses par ordre alphanumerique ascendant, doivent avoir l'extension "pref" ou aucune extension et ne peuvent contenir que des caracteres alphanumeriques, des tirets (-), des caracteres de soulignement (_) et des points (.). Dans le cas contraire, APT affichera un avertissement indiquant qu'il a ignore un fichier si celui-ci ne correspond par a un motif defini dans Dir::Ignore-Files-Silently (les fichiers correspondant a cette variable de configuration etant, eux, ignores silencieusemennt). Priorites affectees par defaut Quand le fichier des preferences n'existe pas, ou quand aucune entree de ce fichier ne s'applique a une version precise, la priorite affectee a cette version est la priorite de la distribution a laquelle elle appartient. On peut distinguer une distribution et lui donner une priorite plus haute que celle des autres distributions : on l'appelle la distribution par defaut ou << target release >> et elle peut etre definie 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 defaut a ete indiquee, APT utilise l'algorithme suivant pour determiner la priorite des versions d'un paquet : priorite 1 to the versions coming from archives which in their Release files are marked as "NotAutomatic: yes" but not as "ButAutomaticUpgrades: yes" like the Debian experimental archive, as well as versions that are not phased on this systems. une priorite egale a 100 pour les versions issues d'archives dont le fichier Release comporte la mention << NotAutomatic: yes >> et << ButAutomaticUpgrades: yes >> comme l'archive des retroportages de Debian depuis squeeze-backports. une priorite egale a 500 est affectee aux versions qui n'appartiennent pas a la distribution par defaut. une priorite egale a 990 est affectee aux versions qui appartiennent a la distribution par defaut. La priorite la plus elevee dont la description correspond a la version est affectee a la version. Quand aucune distribution par defaut n'a ete indiquee, APT affecte simplement une priorite egale a 100 a toute version installee d'un paquet et une priorite egale a 500 a tout version non installee. Cela a l'exception des versions issues des archives qui ont la mention << NotAutomatic: yes >> dans leur fichier Release, qui auront alors une priorite egale a 1 ou a 100 si elles sont egalement marquees avec << ButAutomaticUpgrades: yes >>. Puis APT applique les regles suivantes pour determiner la version du paquet qu'il faut installer (par ordre de priorite) : o Ne jamais revenir en arriere, sauf si la priorite d'une version disponible depasse 1000. << Revenir en arriere >> signifie installer une version moins recente que la version installee. Il faut noter qu'aucune des priorites par defaut n'excede 1000 ; de telles valeurs ne peuvent etre definies que dans le fichier des preferences. Notez aussi qu'il est risque de revenir en arriere. o Installer la version qui possede la priorite la plus haute. o Quand deux (ou plus) versions ont la meme priorite, installer la version la plus recente (c.-a-d. celle dont le numero de version est le plus grand). o Quand deux (ou plus) versions ont la meme priorite et le meme numero de version, mais soit les paquets different par certaines metadonnees, soit l'option --reinstall a ete donnee, installer la version qui n'est pas installee. En general, la version installee d'un paquet (priorite 100) n'est pas aussi recente que les versions disponibles dans les sources listees dans le fichier sources.list(5) (priorite 500 ou 990). Et donc le paquet sera mis a niveau avec la commande : apt-get install paquet ou apt-get dist-upgrade. La version installee d'un paquet peut etre - rarement - plus recente que tout autre version disponible. Les commandes apt-get install paquet ou apt-get upgrade ne provoquent pas de retour en arriere. Parfois, la version installee d'un paquet est plus recente que la version appartenant a la distribution par defaut, mais moins recente que la version appartenant a une autre distribution. Une telle version sera mise a niveau par les commandes apt-get install paquet ou apt-get upgrade car au moins l'une des versions disponibles possede une plus haute priorite que celle de la version installee. Phased Updates 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. Consequences des preferences Le fichier des preferences permet a l'administrateur systeme de controler l'affectation des priorites. Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Ces entrees peuvent avoir deux formes, une forme particuliere et une forme generale. o La forme particuliere affecte une priorite (Pin-Priority) a un paquet precis, a une version precise ou a un intervalle specifiant plusieurs versions. Par exemple, l'entree suivante affecte une priorite haute a toutes les versions du paquet perl dont le numero de version commence par 5.32. Package: perl Pin: version 5.32* Pin-Priority: 1001 o La forme generale affecte une priorite a toutes les versions d'un paquet dans une distribution donnee (c'est-a-dire, a toutes les versions d'un paquet qui sont listees dans un fichier Release), ou a toutes les versions d'un paquet provenant d'un site Internet identifie par un nom completement qualifie. Cette forme generale des entrees du fichier des preferences s'applique seulement aux groupes de paquets. Par exemple, l'entree suivante affecte une priorite haute a toutes les versions disponibles dans le site local. Package: * Pin: origin "" Pin-Priority: 999 Il est important de noter que le mot-cle utilise ici est << origin >> qui peut servir a indiquer un nom d'hote. Dans l'exemple qui suit, une haute priorite est donnee a toutes les versions disponibles sur le serveur identifie par le nom d'hote << ftp.de.debian.org >>. Package: * Pin: origin "ftp.de.debian.org" Pin-Priority: 999 Veuillez noter que le mot-cle utilise ici, origin, ne doit pas etre confondu avec l'Origine d'une distribution indiquee dans un fichier Release. Ce qui suit l'etiquette << 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'entree suivante affecte une priorite basse a toutes les versions d'un paquet appartenant a toute distribution dont le nom d'<< Archive >> est unstable. Package: * Pin: release a=unstable Pin-Priority: 50 L'entree suivante affecte une priorite haute a toutes les versions d'un paquet appartenant a toute distribution dont le nom de code est trixie. Package: * Pin: release n=trixie Pin-Priority: 900 L'entree suivante affecte une priorite haute a toutes les versions d'un paquet appartenant a toute distribution dont le nom d'<< Archive >> est stable et dont le numero de << Version >> est 12. Package: * Pin: release a=stable, v=12 Pin-Priority: 500 L'effet de l'operateur virgule est identique a un << and >> logique : toutes les conditions doivent etre satisfaites pour que l'epinglage corresponde. Il existe une exception : pour chaque type de condition (telles que deux conditions << a >>), seule la derniere condition est verifiee. Matching packages in the Package field The Package field specifies the package that a pinning priority is applied to. The field can either contain a binary package name, a source package name (prefixed with "src:"), a glob(7) expression or a regular expression (surrounded by slashes). Multiple package names, glob(7) expressions and regular expressions can be listed separated by whitespace in which case the record will match any of the matched packages. By default, only packages of the native architecture are matched. To match binary packages of any architecture, add the :any suffix to the package name. You can also limit matching to a specific architecture by appending the architecture name to the package name, separated by a colon character. For example, the following example uses a glob expression and a regular expression to assign the priority 500 to all packages from experimental where the name starts with gnome (as a glob(7)-like expression) or contains the word kde (as a POSIX extended regular expression surrounded by slashes). Package: gnome* /kde/ Pin: release a=experimental Pin-Priority: 500 La regle pour ces expressions est qu'elles peuvent prendre place des que la chaine correspondante est trouvee. Ainsi, l'epinglage qui suit affecte une priorite de 990 a tous les paquets d'une version de distribution commencant par lunar. Package: * Pin: release n=lunar* Pin-Priority: 990 Si une expression reguliere est rencontree dans un champ Package, le comportement sera celui qui aurait eu lieu si cette expression etait remplacee par la liste de tous les paquets auxquels elle correspond. Il n'est pas encore decide si cela sera conserve dans le futur : il est donc conseille d'utiliser des epinglages avec caracteres generiques en premier afin qu'ils soient remplaces par des epinglages plus specifiques. Le motif << * >> dans un champ Package n'est pas considere comme une expression glob(7) en soi. 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.9.6 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 The :any suffix makes sure to select binary packages from any architecture. Without that suffix, apt implicitly assumes the :native suffix which would only select packages from the native architecture. Methode d'interpretation des priorites par APT Les priorites (P) indiquees dans le fichier des preferences doivent etre des entiers positifs ou negatifs. Ils sont interpretes a peu pres comme suit : P >= 1000 cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere. 990 <= P < 1000 la version sera installee, meme si elle n'appartient pas a la distribution par defaut ; mais elle ne sera pas installee si la version installee est plus recente. 500 <= P < 990 La version sera installee, sauf s'il existe une version appartenant a la distribution par defaut ou si la version installee est plus recente. 100 <= P < 500 la version sera installee, sauf s'il existe une version appartenant a une autre distribution ou si la version installee est plus recente. 0 < P < 100 la version sera installee si aucune version du paquet n'est installee. P < 0 cette priorite empeche l'installation de la version. P = 0 a un comportement indefini, ne pas l'utiliser. La premiere entree de forme particuliere correspondant a une version disponible de paquet determine la priorite de la version du paquet. S'il n'en existe pas, la priorite du paquet est definie comme la plus haute de toutes les priorites par les entrees de forme generale correspondant a la version. Les entrees definies en utilisant des motifs dans le champ Pin autre que << * >> sont traitees comme des entrees de forme generale. Supposons par exemple que le fichier des preferences contienne les trois entrees decrites 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 : o La version la plus recente du paquet perl sera installe pour autant que son numero de version commence par 5.32. Si l'une des versions 5.32* existe et si la version installee est une version 5.36*, il y aura un retour en arriere. o Les versions des paquets (autres que perl) disponibles dans le site local ont priorite sur les autres versions, meme celles appartenant a la distribution par defaut. o La version d'un paquet dont l'origine n'est pas le site local mais un site Internet mentionne dans sources.list(5) et qui appartient a une distribution unstable, ne sera installee que si aucune version du paquet n'est deja installee. Determination de la version des paquets et des proprietes des distributions Chaque source indiquee dans le fichier sources.list(5) doit fournir les fichiers Packages et Release qui decrivent les paquets disponibles a cet endroit. Le fichier Packages se trouve normalement dans le repertoire .../dists/dist-name/component/arch, par exemple, .../dists/stable/main/binary-i386/Packages. Il consiste en entrees composees de lignes, une pour chaque paquet disponible dans le repertoire. Seules deux lignes des entrees sont pertinentes pour la determination des priorites : la ligne Package: donne le nom du paquet la ligne Version: donne le numero de version du paquet Le fichier Release se trouve normalement dans le repertoire .../dists/nom-distribution, par exemple, .../dists/stable/Release, ou .../dists/bookworm/Release. Il consiste en une seule entree composee de plusieurs lignes qui s'applique a tous les paquets situes dans les repertoires sous le repertoire parent. Contrairement au fichier Packages, presque toutes les lignes du fichier Release sont pertinentes pour determiner les priorites : La ligne Archive: ou Suite: nomme l'archive a laquelle appartiennent tous les paquets situes dans les repertoires. Par exemple, la ligne Archive: stable indique que tous les paquets dans les repertoires situes sous le repertoire parent du fichier Release appartiennent a l'archive stable. Indiquer cette valeur dans le fichier des preferences demanderait cette ligne : Pin: release a=stable la ligne Codename: indique le nom de code auquel appartiennent tous les paquets situes dans les repertoires. Par exemple, la ligne Codename: trixie indique que tous les paquets dans les repertoires situes sous le repertoire parent du fichier Release appartiennent a la version portant le nom de code trixie. Indiquer cette valeur dans le fichier des preferences demanderait cette ligne : Pin: release n=trixie la ligne Version: indique la version de la distribution. Par exemple, les paquets dans les repertoires peuvent appartenir a la distribution Debian version 12. Il n'y a pas de numero de version pour les distributions testing et unstable car elles n'ont pas encore ete publiees. Indiquer cette valeur dans le fichier des preferences demanderait ces lignes : Pin: release v=12 Pin: release a=stable, v=12 Pin: release 12 La ligne Component: nomme un composant qui indique le type de licence associee aux paquets situes dans les repertoires sous le fichier Release. Par exemple, la ligne Component: main indique que tous les exemplaires dans les repertoires appartiennent au composant main, c'est-a-dire que leur licence est en accord avec les Directives Debian pour le logiciel libre. Indiquer ce composant dans le fichier des preferences demanderait cette ligne : Pin: release c=main La ligne Origin: nomme l'origine des paquets situes dans les repertoires sous le fichier Release. En general, c'est Debian. Indiquer cette origine dans le fichier des preferences demanderait cette ligne : Pin: release o=Debian La ligne Label: indique une etiquette pour les paquets qui se trouvent dans les repertoires sous le fichier Release. En general, c'est Debian. Indiquer cette origine dans le fichier des preferences demanderait cette ligne : Pin: release l=Debian Tous les fichiers Packages et Release recuperes dans des sources indiquees dans le fichier sources.list(5) sont conserves dans le repertoire /var/lib/apt/lists ou dans le fichier specifie 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 preferences Toute entree du fichier des preferences peut commencer par une ou plusieurs lignes contenant le mot Explanation:. Cela permet des commentaires. EXEMPLES Methode pour suivre Stable Le fichier des preferences suivant affecte une priorite plus haute que la priorite par defaut (500) a tous les exemplaires appartenant a la distribution stable et une priorite prohibitivement basse a tous les exemplaires appartenant a 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 preferences ci-dessus et un fichier sources.list(5) adequat, les commandes suivantes utiliseront les versions les plus recentes de stable pour faire la mise a niveau : apt-get install paquet apt-get upgrade apt-get dist-upgrade La commande suivante utilisera la version la plus recente de la distribution testing pour mettre a niveau le paquet specifie ; cependant les mises a niveau ulterieures du paquet ne se feront pas a moins de relancer la commande. apt-get install paquet/testing Methode pour suivre Testing ou Unstable Le fichier des preferences suivant affecte une priorite haute aux versions des paquets appartenant a la distribution testing, une priorite moindre aux versions appartenant a la distribution unstable et une priorite prohibitivement basse aux versions appartenant a 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) approprie et le fichier des preferences ci-dessus, les commandes suivantes utiliseront les versions les plus recentes de testing pour faire la mise a niveau : apt-get install paquet apt-get upgrade apt-get dist-upgrade La commande suivante utilisera la version la plus recente de la distribution unstable pour mettre a niveau le paquet specifie ; Par la suite, apt-get upgrade mettra le paquet a jour avec la plus recente version dans testing si elle est plus recente que la version installee ou avec la plus recente version dans unstable si elle est plus recente que la version installee. apt-get install paquet/unstable Suivre l'evolution d'une version par son nom de code Le fichier des preferences suivant affecte une priorite plus haute que la priorite par defaut (500) a tous les exemplaires appartenant a la version portant le nom de code indique et une priorite prohibitivement basse a tous les exemplaires appartenant a d'autres distributions Debian. Veuillez noter qu'avec ce fichier de preferences, 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 precedents. Explanation: Ne pas installer des exemplaires d'origine Debian Explanation: sauf ceux de la distribution trixie ou sid Package: * Pin: release n=trixie 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 preferences ci-dessus et un fichier sources.list(5) adequat, les commandes suivantes utiliseront les versions les plus recentes de trixie pour faire la mise a niveau : apt-get install paquet apt-get upgrade apt-get dist-upgrade La commande suivante utilisera la version la plus recente de la distribution sid pour mettre a niveau le paquet specifie ; Par la suite, apt-get upgrade mettra le paquet a jour avec la plus recente version dans trixie si elle est plus recente que la version installee ou avec la plus recente version dans sid si elle est plus recente que la version installee. apt-get install paquet/sid FICHIERS /etc/apt/preferences Fichier des preferences. C'est dans ce fichier qu'on peut faire de l'epinglage (pinning) c'est-a-dire, choisir d'obtenir des paquets d'une source distincte ou d'une distribution differente. Element de configuration : Dir::Etc::Preferences. /etc/apt/preferences.d/ Fragments de fichiers pour la preference des versions. Element 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 a propos d'APT, veuillez lire /usr/share/doc/debian/bug-reporting.txt ou utiliser la commande reportbug(1). TRADUCTEURS Jerome Marant, Philippe Batailler, Christian Perrier (2000, 2005, 2009, 2010), Equipe de traduction francophone de Debian Veuillez noter que cette traduction peut contenir des parties non traduites. Cela est volontaire, pour eviter de perdre du contenu quand la traduction est legerement en retard sur le contenu d'origine. AUTEUR Equipe de developpement d'APT NOTES 1. Page des bogues d'APT https://bugs.debian.org/src:apt APT 2.9.6 03 janvier 2022 APT_PREFERENCES(5)