Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
(ou fou furieux)
Lorsque l'on dispose de plusieurs versions installables dans les dépôts renseignés dans les fichiers sources.list, il faut définir des priorités pour que APT
sache quelle version installer.
Par exemple, si l'on a les dépôts Debian de testing et unstable et que l'on veut rester autant que possible en testing, il faut indiquer à APT
que testing a une priorité supérieure à sid. Inversement, si pour un paquet donné on veut utiliser sa version présente dans sid, il faut le spécifier également. La définition de ces priorités s'appelle le pinning.
C'est à cela que servent les fichiers preferences.
Les cas d'utilisation raisonnable sont les suivants :
En dehors de ça, si vous voulez mélanger stable et une testing/unstable/experimental, alors vous devriez prendre rendez-vous d'urgence chez votre garagiste pour qu'il s'occupe de votre carie.
Les fichiers preferences
permettent de fixer la priorité des paquets suivant leurs dépôt. Voici la signification d'une priorité P
.
Le paquet sera installé même si APT est forcé d'installer une version plus ancienne2) que la version actuelle. Cette opération n'est pas sans risque.
Le paquet sera installé sauf si une version plus récente est déjà installée.
Le paquet ne sera installé qu'à défaut de version plus récente installée ou disponible dans la distribution cible.
Le paquet ne sera installé que s'il n'en existe aucune version plus récente, installée ou disponible dans une autre branche.
Le paquet ne sera installé que si aucune autre version du paquet n'est installée.
Le paquet ne sera jamais installé.
backports
, de priorité 100, et du dépôt experimental
de priorité 1.La commande :
apt -t stretch-backports install libreoffice
donne une priorité élevée à toute la branche stretch-backports le temps de l’instance d’APT.
L'option -t (t
pour target) indique le dépôt cible où l'on va chercher le paquet à installer en gérant correctement les dépendances par rapport à ce dépôt et aux dépôts stables.
Merci à chalu de cette précision-ci sur le forum à ce post là :
La commande :
apt install libreoffice/stretch-backports
pose des problèmes de dépendances parce que la version prioritaire du paquet libreoffice-common restera celle des sources habituelles et non pas celles des backports.
Lien sur le forum :
différence install -t backports & paquet/backports
On peut vérifier les priorités en utilisant la ligne de commande, par exemple, si vous êtes en stable :
apt-cache policy
preferences
, on peut très rapidement faire quelque chose qu'on ne voulait pas, et qui nous oblige à réinstaller le système.
Pour éviter cela, il existe une série de tests que vous pouvez faire pour tester votre configuration, et de précautions à prendre.
Après avoir créé ou modifié votre fichier preferences
, la première chose à faire est dans un terminal en root :
apt-get update
Puis vérifiez que vos modifications ont bien été prises en compte grâce à apt-cache
(voir ci-dessus).
Ce fichier donne une priorité de 900 à tous les paquets de la release stable et une priorité de -10 aux autres (donc ils ne sont pas installés).
Il est parfaitement inutile si vous n'avez que les dépôts stable dans votre sources.list, il permet en revanche d'éviter à tout prix l'installation de paquets testing ou unstable si vous êtes en stable mais avez (pour une raison que je ne veux pas connaître) tout de même envie de mettre ces dépôts dans votre sources.list.
On crée un fichier /etc/apt/preferences.d/00stable-seulement
contenant le code suivant :
Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release a=stable-updates Pin-Priority: 900 Package: * Pin: release a=proposed-updates Pin-Priority: 900 Package: * Pin: release o=Debian Pin-Priority: -10
Par exemple, pour installer la version d'iceweasel des backports et la maintenir à jour.
On crée un fichier /etc/apt/preferences.d/90suivi-backports
contenant le code suivant :
Package: iceweasel Pin: release a=stretch-backports Pin-Priority: 900
Pour garder le dépôt multimedia à disposition, sans faire les mises à jour vers ce dépôt systématiquement.
On crée un fichier /etc/apt/preferences.d/50multimedia
contenant le code suivant :
Package: * Pin: release o=Unofficial Multimedia Packages,a=stable Pin-Priority: 100
On suppose que vous avez comme sources quelque chose comme ça :
deb http://deb.debian.org/debian testing main contrib non-free deb http://deb.debian.org/debian sid main contrib non-free
mais que vous voulez rester en testing autant que possible.
On crée un fichier /etc/apt/preferences.d/40sid-et-testing
contenant le code suivant :
Package: * Pin: release n=sid Pin-Priority: 100
Par exemple, je suis en sid mais veut installer la version experimental
de iceweasel
tout en restant à jour.
On crée un fichier /etc/apt/preferences.d/40suivi-experimental
contenant le code suivant :
Package: iceweasel Pin: release a=experimental Pin-Priority: 900
La priorité du dépôt deb-multimedia pour experimental est à 500 par défaut. Si vous avez ce dépôt dans votre fichier sources.list, faite donc attention à votre fichier preferences si vous ne désirez pas que tous les paquets issus de deb-multimedia passent en experimental.
On crée un fichier /etc/apt/preferences.d/40multimedia-experimental
contenant le code suivant :
Package: * Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages Pin-Priority: 1
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.8. :
Package: perl Pin: version 5.8* Pin-Priority: 1001
Merci à caly sur le chan d'avoir suscité cet ajout.
deb http://deb.debian.org/debian/ stretch main contrib non-free
apt-cache policy
donne une option (n=stretch)
900 http://deb.debian.org/debian/ stretch/main Packages release v=6.0.2.1,o=Debian,a=stable,n=stretch,l=Debian,c=main origin deb.debian.org
donc on peut rajouter dans le fichier preferences ce style d'interprétation :
Package: * Pin: release a=stable Pin-priority: 900 Package: * Pin: release n=stretch Pin-priority: 900
Une autre façon d'avoir le dépôt multimédia à faible priorité
Pour garder le dépôt multimédia à disposition, sans faire les mises à jour vers ce dépôt systématiquement.
deb http://www.deb-multimedia.org jessie main non-free
Package: * Pin: origin "www.deb-multimedia.org" Pin-Priority: 100
La dernière version de iceweasel avec buster (testing)
deb http://cdn.debian.net/debian unstable main deb http://cdn.debian.net/debian experimental main
Package: iceweasel iceweasel-l10n-fr Pin: origin "cdn.debian.net" Pin-Priority: 500 Package: * Pin: release a=experimental,n=experimental Pin-Priority: 1 Package: * Pin: origin "cdn.debian.net" Pin-Priority: 100
C'est le comportement par défaut quand on n'a que les dépôts de la branche suivie, sans fichier preferences.
(Excepté les dépôts backports)
pour la branche suivie et la/les branche(s) comportant des paquets aux versions égales ou inférieures à la branche suivie.
Pourquoi une valeur plus petite que 990 ? Parce que lorsque l'on utilise l'option -t ainsi :
apt-get install -t <branche> <le_nom_du_paquet>
pour installer des paquets d'une branche autre que celle suivie, celle-ci
devient la branche par défaut (APT::Default-Release “branche”) avec une priorité
temporaire de 990.
Donc, pour la branche prioritaire du fichier preferences
Il est préférable d'utiliser des chiffres ronds, comme 900, 800, 90. Par exemple, si l'on a une priorité 620 et une priorité 630, il sera facile d'intercaler une priorité 625.
Bref, installer ou mettre à jour un paquet d'une branche supérieure peut n'être possible qu'en migrant vers la branche supérieure.
Si vous êtes sous stable et que vous voulez installer un paquet de la branche testing, ou même unstable, qui impliquerait des mises à jour aussi importantes que libc6, alors abandonnez, le pinning ne sera pas une solution pour vous, puisqu'il romprait la stabilité du système et effectuerait une mise à jour partielle vers testing, ce qui est la pire des situations possibles.
La documentation de référence sur ce fichier de configuration est disponible dans la page de manuel apt_preferences, accessible par la commande :
man apt_preferences