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 outrepasse 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 silencieusement). 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. Il est possible de distinguer une distribution, la << target release >> (distribution par defaut) qui recoit une priorite plus haute que celle des autres distributions. Cette distribution par defaut peut etre definie sur la ligne de commande de apt-get ou dans le fichier de configuration d'APT, /etc/apt/apt.conf. Notez que cette priorite est plus forte que toute priorite generale definie dans le fichier /etc/apt/preferences decrit plus loin, mais pas sur des paquets specialement epingles. 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 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 etapes sur ces systemes. 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 toute 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'est-a-dire 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. Mises a jour par etapes APT interprete un champ intitule Phased-Update-Percentage qui peut etre utilise pour controler la mise en oeuvre d'une nouvelle version. C'est un entier entre 0 et 100. L'eligibilite d'un systeme a une mise a jour par etapes est determinee par la generation d'un nombre aleatoire avec le nom du paquet source, le numero de version et le /etc/machine-id, puis en calculant un entier dans la plage [0, 100]. Si cet entier est superieur au Phased-Update-Percentage, la version est epinglee a 1 et donc retenue. Autrement, les regles normales de la politique s'appliquent. Si vous avez plusieurs systemes et voulez qu'ils recoivent le meme ensemble de mises a jour, vous pouvez regler APT::Machine-ID a un UUID tel que ces systemes auront les memes etapes de mise a jour, ou definir APT::Get::Never-Include-Phased-Updates ou APT::Get::Always-Include-Phased-Updates a << true >> de sorte qu'APT ne prenne jamais ou toujours en consideration les mises a jour par etapes (respectivement). Consequences des preferences d'APT 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 Depuis la version 2.9.9, vous pouvez aussi epingler par une version de la source : Package: perl Pin: source-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 forky. Package: * Pin: release n=forky 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 13. Package: * Pin: release a=stable, v=13 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. Correspondance de paquets dans le champ Package Le champ Package definit les paquets auxquels s'applique un epinglage. Le champ peut contenir un nom de paquet binaire, un nom de paquet source (prefixe par << src: >>), une expression glob(7) ou une expression rationnelle (entoure de barres obliques). Plusieurs noms de paquet, expressions glob(7) ou expressions rationnelles peuvent etre listes separes par des espaces, auquel cas l'entree correspondra a tous les paquets correspondants. Par defaut, 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 a une architecture particuliere en ajoutant le nom de l'architecture au nom du paquet, separe par le caractere deux-points. Dans l'exemple suivant, une expression glob(7) et une expression rationnelle sont utilisees pour affecter une priorite de 500 a 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 etendue, entouree de barres obliques). 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 plucky. Package: * Pin: release n=plucky* Pin-Priority: 990 Si une expression rationnelle 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. Pour epingler tous les binaires produits par le paquet source apt de cette version d'APT a une valeur de 990, vous pouvez entrer : Package: src:apt Pin: version 3.0.1 Pin-Priority: 990 L'epinglage de paquet source peut etre combine avec des expressions rationnelles et des motifs glob(7), et peut aussi porter sur une architecture binaire. Par exemple, nous allons epingler a 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 selectionner les paquets binaires de toutes les architectures. Sans ce suffixe, APT presume implicitement le suffixe :native qui ne selectionne que les paquets de l'architecture native. 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/nom-distribution/composant/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/trixie/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: forky 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 forky. Indiquer cette valeur dans le fichier des preferences demanderait cette ligne : Pin: release n=forky la ligne Version: indique la version de la distribution. Par exemple, les paquets dans les repertoires peuvent appartenir a la distribution Debian version 13. 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 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 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 debutant par 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: Desinstaller 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 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 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 preferences ci-dessus et un fichier sources.list(5) adequat, les commandes suivantes utiliseront les versions les plus recentes de forky 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 forky 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), bubu et Jean-Pierre Giraud (2004, 2017-2024) et l'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 3.0.1 22 aout 2024 APT_PREFERENCES(5)