editor, reviewer
523
modifications
Ligne 33 : | Ligne 33 : | ||
== Structure du fichier /etc/apt/preferences == | == Structure du fichier /etc/apt/preferences == | ||
Ce fichier est | Ce fichier est constitué d'une ou plusieurs entrées séparées par des lignes blanches. Un exemple d'entrées de fichier preferences: | ||
Package: * | Package: * | ||
Ligne 44 : | Ligne 44 : | ||
On constate que chaque | On constate que chaque entrée est de la forme suivante: | ||
Package: * ou nom de paquet | Package: * ou nom de paquet | ||
Pin: release a=,n=,v=,c=,o=,l= | Pin: release a=,n=,v=,c=,o=,l= | ||
Pin-Priority: P (ou P est un entier positif ou | Pin-Priority: P (ou P est un entier positif ou négatif) | ||
Pour | Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des resultats de ce type: | ||
500 http://ftp2.fr.debian.org stable/contrib Packages | 500 http://ftp2.fr.debian.org stable/contrib Packages | ||
Ligne 58 : | Ligne 58 : | ||
Dans cet exemple ''500'' indique la | Dans cet exemple ''500'' indique la priorité assignée au dépôt http://ftp2.fr.debian.org stable/contrib. Les variables telles ''release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib'' serviront à compléter la ligne ''Pin'' des entrées du fichier preferences et sont donc expliquées au paragraphe qui la concerne un peu plus bas. | ||
Détaillons ligne par ligne les entrées du fichier preferences: | |||
==== Ligne Package ==== | ==== Ligne Package ==== | ||
C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets | C'est là qu'est indiqué le nom du paquet étiqueté ou * si l'étiquetage concerne tout un groupe de paquets défini par la ligne ''Pin''. | ||
==== Ligne Pin ==== | ==== Ligne Pin ==== | ||
Ligne 83 : | Ligne 83 : | ||
La commande '''apt-cache policy''' n'est qu'un moyen | La commande '''apt-cache policy''' n'est qu'un moyen très accessible de synthétiser cela et de voir quelles sont les priorités qu'APT attribue à un, plusieurs ou des ensembles de paquets. | ||
Ainsi cette entree: | Ainsi cette entree: | ||
Ligne 95 : | Ligne 95 : | ||
Package: * -> L'ensemble des paquets | Package: * -> L'ensemble des paquets | ||
Pin: release o=Debian,a=stable -> se trouvant dans des | Pin: release o=Debian,a=stable -> se trouvant dans des dépôts dont la variable Origin (o) a pour valeur "Debian" | ||
et la variable Suite (a) a pour valeur "stable" | et la variable Suite (a) a pour valeur "stable" | ||
Pin-Priority: 900 -> ont une priorite de 900 | Pin-Priority: 900 -> ont une priorite de 900 | ||
Et cette | Et cette entrée ci: | ||
Package: ardour | Package: ardour | ||
Ligne 110 : | Ligne 110 : | ||
Package: ardour -> Le paquet ardour | Package: ardour -> Le paquet ardour | ||
Pin: release a=unstable -> se trouvant dans des | Pin: release a=unstable -> se trouvant dans des dépôts dont la variable Suite (a) a pour valeur "now" | ||
Pin-Priority: 1001 -> a une priorite de 1001 | Pin-Priority: 1001 -> a une priorite de 1001 | ||
Ligne 135 : | Ligne 135 : | ||
On peut donc inclure une ou | On peut donc inclure une ou plusieurs de ces variables dans la ligne ''Pin''. Il n'est pas forcément utile de les inclure toutes, une ou deux bien utilisées peuvent tout à fait être suffisantes. | ||
==== Ligne Pin-Priority ==== | ==== Ligne Pin-Priority ==== | ||
C'est sur cette ligne qu'est | C'est sur cette ligne qu'est indiquée la priorité du paquet ou groupe de paquets. Elle doit être un entier positif ou négatif. Ces priorités sont interprétés à peu près comme suit: | ||
P > 1000 | P > 1000 | ||
Cette | Cette priorité entraine l'installation du paquet même s'il s'agit d'un retour en arrière. | ||
990 < P <=1000 | 990 < P <=1000 | ||
La version sera | La version sera installée, 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 | 500 < P <=990 | ||
La version sera installee, sauf s'il existe une version appartenant | La version sera installee, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus recente. | ||
100 < P <=500 | 100 < P <=500 | ||
La version sera | La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus recente. | ||
0 < P <=100 | 0 < P <=100 | ||
La version sera | La version sera installée si aucune version du paquet n'est installée. | ||
P < 0 | P < 0 | ||
Cette priorite | Cette priorite empêche l'installation de la version. | ||
Les quelques recommandations qui suivent devraient vous aider a | Les quelques recommandations qui suivent devraient vous aider a établir des priorités qui ne mettront pas votre système en danger. Dans ce qui suit, ''branche principale'' désigne la branche de Debian que vous avez choisie de suivre en priorité (stable, testing ou sid), les autres dépôts presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est. | ||
- '''Garder des | - '''Garder des priorités identiques pour les dépôts Debian officiels d'une même branche'''. C'est le comportement par défaut (quand l'on a que les dépôts de la branche principale dans le sources.list sans preferences). Tout manquement à cette règle casse le comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian. | ||
- '''Attribuer une | - '''Attribuer une priorité comprise entre 500 et <990 pour la branche principale''' et la/les branche(s) comportant des paquets aux versions =< à cette branche principale. | ||
Pourquoi <990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par | Pourquoi <990? Car lorsque l'on utilise l'option ''-t branche'' pour piocher des paquets dans une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. On comprend donc aisément qu'avoir une priorite =>990 pour la branche principale perturbe cette option. | ||
Les | Les méthodes pour piocher dans les differents dépôts sont expliquées un peu plus bas, dans le paragraphe ''Comment piocher dans les différents dépôts du sources.list?'' ce qui devrait clarifier ce point. | ||
- '''Attribuer une | - '''Attribuer une priorité comprise entre 1 et <100 pour la/les branche(s) comportant des paquets aux versions > à la branche principale'''. Ceci permet d'installer les paquets à la demande ou a ''aptitude'' de le faire simplement en cas de besoins sans pour autant "suivre" les paquets installés à partir des ces dépôts. | ||
Si on veut les "suivre", c'est a dire qu'ils se mettent | Si on veut les "suivre", c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorité à ces branches comprise entre 100 et <500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences générique du fait des dépendances. | ||
- D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de | - D'un point de vue pratique, '''utiliser des chiffres ronds''' (900, 800, 90...). Cela permet d'adapter facilement le preferences en fonction des besoins individuels (ajout de dépôts, etc) sans avoir à décaler toutes les autres entrées dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la différence entre les différentes priorités des dépôts à la lecture du ''apt-cache policy''. | ||
==== Comment piocher dans les | ==== Comment piocher dans les différents dépôts du sources.list? ==== | ||
Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre | Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre à jour APT en utilisant soit la commande '''apt-get update''', soit la commande '''aptitude update'''. Vérifiez ensuite à l'aide de ''apt-cache policy'' que les priorités sont correctes. | ||
Il y a deux | Il y a deux manières d'indiquer à APT d'aller piocher dans des dépôts différents que ceux de la branche principale (les commandes qui suivent sont valable à la fois pour ''apt-get'' et pour ''aptitude''): | ||
- Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version | - Vous utiliserez '''apt-get install -t branche paquet(s)''' si vous voulez installer un paquet avec une version supérieure à celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour présent dans sid parce qu'il est plus récent, vous utiliserez cette commande: | ||
apt-get install -t unstable ardour | apt-get install -t unstable ardour | ||
Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les | Lorsque l'on utilise l'option ''-t branche'' pour installer des paquets d'une autre branche que la principale, celle-ci devient temporairement la branche par défaut et a donc une priorite de 990. Du coup les dépendances sont mieux gérées. | ||
Ligne 202 : | Ligne 202 : | ||
Le | Le problème c'est que APT voudra remettre à niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installée. Pour cela il y a deux possibilites: | ||
- Soit '''utiliser la commande aptitude hold paquet'''. Pour | - Soit '''utiliser la commande aptitude hold paquet'''. Pour débloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets à mettre à jour, les paquets que vous avez bloqué par cette méthode y apparaitront précédés d'un '''h'''. | ||
- Soit ''' | - Soit '''étiqueter le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numero de version du paquet bloqué ou avec la variable release''' a=now'''. | ||
Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' | Par exemple si je veux downgrader ardour de la ''version 1:2.8.11-1'' présente dans sid à la ''version 1:2.8.9-1'' présente dans testing, j'effectuerai un '''aptitude install ardour/testing''' avant d'ajouter cette entrée dans le preferences: | ||
Package: ardour | Package: ardour | ||
Ligne 218 : | Ligne 218 : | ||
Si vous avez un doute sur le | Si vous avez un doute sur le numéro de version a insérer dans la ligne ''Pin'', un '''apt-cache policy''' paquet vous renseignera, dans le cas de notre exemple: | ||
# apt-cache policy ardour | # apt-cache policy ardour | ||
Ligne 232 : | Ligne 232 : | ||
Encore plus simple, vous pouvez assigner | Encore plus simple, vous pouvez assigner à la ligne ''Pin'' la variable de release '''a=now''', variable que l'on pourrait expliquer par ''paquet(s) installe(s) maintenant''. | ||
Package: ardour | Package: ardour | ||
Ligne 239 : | Ligne 239 : | ||
Dans notre exemple, avec cette | Dans notre exemple, avec cette entrée, ''le paquet ardour qui est installé maintenant sera forcément installé même s'il s'agit d'un retour en arrière'', donc ne sera pas mis à jour. Pour débloquer le paquet il suffira d'enlever son entrée du fichier preferences. | ||
'''N' | '''N'hésitez pas à simuler en utilisant l'option de simulation -s'''. Par exemple faire '''apt-get install -s ardour/testing''' va simuler le downgrade du paquet ardour sans l'appliquer reellement, ça permet de vérifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez réellement la commande en enlevant l'option ''-s''. cette option fonctionne également avec ''aptitude'', ou encore en combinaison avec l'option ''-t'' (par exemple ''apt-get install -s -t unstable ardour''), aussi pour effectuer des mises à jour (par exemple ''aptitude safe-upgrade -s''), etc... C'est une sécurité non négligeable. | ||
== Stable == | == Stable == |