« L'épinglage de paquets via le fichier /etc/apt/preferences » : différence entre les versions
m (Creation de la page) |
m (Rajout de texte) |
||
Ligne 34 : | Ligne 34 : | ||
Structure du fichier /etc/apt/preferences | |||
Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences : | |||
Code: | |||
Package: * | |||
Pin: release a=unstable o=Debian | |||
Pin-Priority: 90 | |||
Package: ardour | |||
Pin: release a=unstable | |||
Pin-Priority: 1001 | |||
On constate que chaque entree est de la forme suivante : | |||
Code: | |||
Package: * ou nom de paquet | |||
Pin: release a=,n=,v=,c=,o=,l= | |||
Pin-Priority: P (ou P est un entier positif ou negatif) | |||
Pour completer au mieux ces entrees nous nous servirons de la commande apt-cache policy qui donne des resultats de ce type : | |||
Code: | |||
500 http://ftp2.fr.debian.org stable/contrib Packages | |||
release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib | |||
origin ftp2.fr.debian.org | |||
Dans cet exemple 500 indique la priorite assignee au depot 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 a completer la ligne Pin des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas. | |||
Detaillons ligne par ligne les entrees du fichier preferences : | |||
- Ligne Package | |||
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne Pin. | |||
- Ligne Pin | |||
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne release du apt-cache policy, dans l'exemple precedent : release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib. | |||
Les fichiers de configuration des depots se trouvent dans /var/lib/apt/lists/. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers *Release comme par exemple /var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release dont voici la partie qui nous interesse : | |||
Code: | |||
Origin: Debian | |||
Label: Debian | |||
Suite: stable | |||
Version: 5.0.5 | |||
Codename: stable | |||
Date: Sat, 26 Jun 2010 12:12:50 UTC | |||
Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc | |||
Components: main contrib non-free | |||
Description: Debian 5.0.5 Released 26 June 2010 | |||
La commande apt-cache policy n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets. | |||
Ainsi cette entree : | |||
Code: | |||
Package: * | |||
Pin: release o=Debian,a=stable | |||
Pin-Priority: 900 | |||
Se lit donc comme suit : | |||
Citer: | |||
Package: * -> L'ensemble des paquets | |||
Pin: release o=Debian,a=stable -> se trouvant dans des depots dont la variable Origin (o) a pour valeur "Debian" et la variable Suite (a) a pour valeur "stable" | |||
Pin-Priority: 900 -> ont une priorite de 900 | |||
Et cette entree ci : | |||
Code: | |||
Package: ardour | |||
Pin: release a=now | |||
Pin-Priority: 1001 | |||
Se lit donc comme suit : | |||
Citer: | |||
Package: ardour -> Le paquet ardour | |||
Pin: release a=unstable -> se trouvant dans des depots dont la variable Suite (a) a pour valeur "now" | |||
Pin-Priority: 1001 -> a une priorite de 1001 | |||
Voyons maintenant quelles peuvent etre ces valeurs : | |||
Citer: | |||
o= correspond a Origin | |||
dans notre exemple -> Pin: release o=Debian | |||
l= correspond a label | |||
dans notre exemple -> Pin: release l=Debian | |||
a= correspond a Suite | |||
dans notre exemple -> Pin: release a=stable | |||
v= correspond a Version | |||
dans notre exemple -> Pin: release v=5.0.5 | |||
c= correspond a Components | |||
dans notre exemple -> Pin: release c=contrib | |||
n= correspond a Codename | |||
dans notre exemple -> Pin: release n=stable | |||
On peut donc inclure une ou plusieures de ces variables dans la ligne Pin. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes. | |||
- Ligne Pin-Priority | |||
C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit : | |||
Citer: | Citer: | ||
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. | |||
Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, "branche principale" designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est. | |||
- Garder des priorites identiques pour les depots Debian officiels d'une meme branche. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian. | |||
- Attribuer une priorite comprise entre 500 et <990 pour la branche principale et la/les branche(s) comportant des paquets aux versions =< a 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 defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =>990 pour la branche principale perturbe cette option. | |||
Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe "Comment piocher dans les differents depots du sources.list?", ce qui devrait clarifier ce point. | |||
- Attribuer une priorite comprise entre 1 et <100 pour la/les branche(s) comportant des paquets aux versions > a la branche principale. Ceci permet d'installer les paquets a la demande ou a aptitude de le faire simplement en cas de besoins sans pour autant "suivre" les paquets installes a partir des ces depots. | |||
Si on veut les "suivre", c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et <500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances. | |||
- 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 depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du apt-cache policy. | |||
- Comment piocher dans les differents depots du sources.list? | |||
Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande apt-get update, soit la commande aptitude update. Verifiez ensuite a l'aide de apt-cache policy que les priorites sont correctes. | |||
Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a 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 superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande : | |||
Code: | |||
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 dependances sont mieux gerees. | |||
Vous utiliserez apt-get install paquet/<branche> si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande : | |||
Code: | |||
apt-get install ardour/testing | |||
Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites : | |||
Soit utiliser la commande aptitude hold paquet. Pour debloquer le paquet il suffira de lancer la commande aptitude unhold paquet. | |||
Soit etiqueter le paquet dans le fichier preferences avec une priorite de 1001 et en renseignant la ligne Pin avec le numero de version du paquet bloque ou avec la variable release a=now. | |||
Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un aptitude install ardour/testing avant d'ajouter cette entree dans le preferences : | |||
Code: | |||
Package: ardour | |||
Pin: version 1:2.8.9-1 | |||
Pin-Priority: 1001 | |||
Si vous avez un doute sur le numero de version a inserer dans la ligne pin, un apt-cache policy paquet vous renseignera, dans le cas de notre exemple : | |||
Code: | |||
# apt-cache policy ardour | |||
ardour: | |||
Installé : 1:2.8.11-1 | |||
Candidat : 1:2.8.11-1 | |||
Table de version : | |||
*** 1:2.8.11-1 0 | |||
500 http://ftp2.fr.debian.org sid/main Packages | |||
100 /var/lib/dpkg/status | |||
1:2.8.9-1 0 | |||
500 http://ftp2.fr.debian.org squeeze/main Packages | |||
Encore plus simple, vous pouvez assigner a la ligne Pin la variable de release a=now, variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant. | |||
Code: | |||
Package: ardour | |||
Pin: release a=now | |||
Pin-Priority: 1001 | |||
Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour. | |||
Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences. | |||
N'hesitez pas a utiliser 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, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option -s. cette option fonctionne egalement avec aptitude, ou encore en combinaison avec l'option -t (par exemple apt-get install -s -t unstable ardour), aussi pour effectuer des mises a jours (par exemple aptitude safe-upgrade -s), etc... C'est une securite non negligeable. | |||
Version du 27 juillet 2010 à 09:55
Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences?
L'etiquetage (ou pinning en VO) consiste a assigner a un paquet (ou a un groupe de paquets) une priorite d'installation differente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermediaire du fichier /etc/apt/preferences. Une installation fraiche ne comporte pas de fichier preferences, il faut donc le creer soi meme.
Chaque depot present dans le sources.list se voit attribuer une priorite d'installation. Par defaut tous les depots ont la meme priorite (500 sauf exception : experimental et backports par exemple qui ont une priorite par defaut de 1), et a priorites egales c'est le numero de version des paquets qui joue : le plus recent est prioritaire.
Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets. Donc par defaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus recents et qui ne viennent pas d'experimental qui ont la priorite, ce qui correspond a sid.
Le fichier de preferences sert a modifier les priorites qui sont affectees aux paquets par APT, et ce par l'intermediaire de regles s'appliquant a un, plusieurs ou un ensemble de paquets (et non a des depots : c'est un abus de language qui peut nuire a la comprehension du fonctionnement des regles). Cette methode peut etre utilisee pour choisir la version des paquets que l'on veut installer ou si l'on souhaite bloquer/suivre un ou des paquets particuliers.
En gros, un fichier preferences n'est utile que si l'on veut mixer differentes branches de debian (par exemple sid avec testing et stable) ou bien lors de l'ajout de depots non officiels dont on veut "affiner" le comportement. Et il n'est utile que si l'on a de bonnes raisons de le faire! Un mauvais usage de l'etiquetage peut tres vite casser votre systeme.
Citer: Bien que la fonction de pinning d'APT decrite dans apt_preferences (5) soit puissante, ses effets peuvent etre difficiles a comprendre et a gerer. Vous devriez la considerer comme une Fonction Avancee.
C'est pas moi qui le dit, c'est la doc officielle... donc la premiere chose a se demander c'est "ai je vraiment besoin d'etiqueter des paquets?". Certains des chapitres suivants devraient vous aider a repondre a cette question, mais cette reponse dependra en tres grande partie de quelle branche de Debian vous avez choisi d'utiliser.
Pour bien saisir le fonctionnement de l'etiquetage, je vous recommande fortement de lire ce tutoriel en entier, voire meme plusieures fois. Certaines informations sont repetees dans differents paragraphes, j'espere que ce n'est pas redondant mais que ca facilite la comprehension du sujet et evitera de faire des erreurs.
Voici les fils de discussion du forum Debian-fr qui ont servi a faire ce tutoriel :
Question concernant le fichier preferences /etc/apt/preferences et sa première non-mise à jour Pourquoi les preferences du T&A sont foireux ? mettre en blacklist des mises à jour APT Énervant manque d'explications : fichier preferences
Vous pouvez egalement trouver des informations sur l'etiquetage en tapant man apt_preferences dans un terminal.
Structure du fichier /etc/apt/preferences
Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences :
Code:
Package: * Pin: release a=unstable o=Debian Pin-Priority: 90 Package: ardour Pin: release a=unstable Pin-Priority: 1001
On constate que chaque entree est de la forme suivante :
Code:
Package: * ou nom de paquet Pin: release a=,n=,v=,c=,o=,l= Pin-Priority: P (ou P est un entier positif ou negatif)
Pour completer au mieux ces entrees nous nous servirons de la commande apt-cache policy qui donne des resultats de ce type :
Code: 500 http://ftp2.fr.debian.org stable/contrib Packages release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib origin ftp2.fr.debian.org
Dans cet exemple 500 indique la priorite assignee au depot 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 a completer la ligne Pin des entrees du fichier preferences et sont donc expliquees au paragraphe qui la concerne un peu plus bas.
Detaillons ligne par ligne les entrees du fichier preferences :
- Ligne Package
C'est la qu'est indique le nom du paquet etiquete ou * si l'etiquetage concerne tout un groupe de paquets defini par la ligne Pin.
- Ligne Pin
Cette ligne servira a indiquer quels paquets seront concernes par l'etiquetage de cette entree. Pour cela on se sert d'une (ou plusieures) variable(s) indiquee(s) a la ligne release du apt-cache policy, dans l'exemple precedent : release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib.
Les fichiers de configuration des depots se trouvent dans /var/lib/apt/lists/. La valeur de ces variables (v,o,a,n,...) est indiquee dans les fichiers *Release comme par exemple /var/lib/apt/lists/ftp2.fr.debian.org_debian_dists_stable_Release dont voici la partie qui nous interesse :
Code: Origin: Debian Label: Debian Suite: stable Version: 5.0.5 Codename: stable Date: Sat, 26 Jun 2010 12:12:50 UTC Architectures: alpha amd64 arm armel hppa i386 ia64 mips mipsel powerpc s390 sparc Components: main contrib non-free Description: Debian 5.0.5 Released 26 June 2010
La commande apt-cache policy n'est qu'un moyen tres accessible de synthetiser cela et de voir quelles sont les priorites qu'APT attribut a un, plusieurs ou des ensembles de paquets.
Ainsi cette entree :
Code:
Package: * Pin: release o=Debian,a=stable Pin-Priority: 900
Se lit donc comme suit :
Citer: Package: * -> L'ensemble des paquets Pin: release o=Debian,a=stable -> se trouvant dans des depots dont la variable Origin (o) a pour valeur "Debian" et la variable Suite (a) a pour valeur "stable" Pin-Priority: 900 -> ont une priorite de 900
Et cette entree ci :
Code:
Package: ardour Pin: release a=now Pin-Priority: 1001
Se lit donc comme suit :
Citer: Package: ardour -> Le paquet ardour Pin: release a=unstable -> se trouvant dans des depots dont la variable Suite (a) a pour valeur "now" Pin-Priority: 1001 -> a une priorite de 1001
Voyons maintenant quelles peuvent etre ces valeurs :
Citer: o= correspond a Origin dans notre exemple -> Pin: release o=Debian
l= correspond a label dans notre exemple -> Pin: release l=Debian
a= correspond a Suite dans notre exemple -> Pin: release a=stable
v= correspond a Version dans notre exemple -> Pin: release v=5.0.5
c= correspond a Components dans notre exemple -> Pin: release c=contrib
n= correspond a Codename dans notre exemple -> Pin: release n=stable
On peut donc inclure une ou plusieures de ces variables dans la ligne Pin. Il n'est pas forcement utile de les inclure toutes, une ou deux bien utilisees peuvent tout a fait etre suffisantes.
- Ligne Pin-Priority
C'est sur cette ligne qu'est indiquee la priorite du paquet ou groupe de paquets. Elle doit etre un entier positif ou negatif. Ces priorites sont interpretes a peu pres comme suit :
Citer: 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.
Les quelques recommandations qui suivent devraient vous aider a etablir des priorites qui ne mettront pas votre systeme en danger. Dans ce qui suit, "branche principale" designe la branche de Debian que vous avez choisie de suivre en priorite (stable, testing ou sid), les autres depots presents dans le sources.list ne servant qu'a y piocher des paquets si besoin est.
- Garder des priorites identiques pour les depots Debian officiels d'une meme branche. C'est le comportement par defaut (quand l'on a que les depots de la branche principale dans le sources.list sans preferences). Tout manquement a cette regle casse le comportement par defaut et peut generer des resultats tres dommageables car non prevus par les devellopeurs Debian.
- Attribuer une priorite comprise entre 500 et <990 pour la branche principale et la/les branche(s) comportant des paquets aux versions =< a 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 defaut et a donc une priorite de 990. On comprend donc aisement qu'avoir une priorite =>990 pour la branche principale perturbe cette option.
Les methodes pour piocher dans les differents depots sont expliquees un peu plus bas, dans le paragraphe "Comment piocher dans les differents depots du sources.list?", ce qui devrait clarifier ce point.
- Attribuer une priorite comprise entre 1 et <100 pour la/les branche(s) comportant des paquets aux versions > a la branche principale. Ceci permet d'installer les paquets a la demande ou a aptitude de le faire simplement en cas de besoins sans pour autant "suivre" les paquets installes a partir des ces depots.
Si on veut les "suivre", c'est a dire qu'ils se mettent a jours automatiquement si une nouvelle version est placee dans ces depots lors d'une mise a jour, il est normalement suffisant d'attribuer une priorite a ces branches comprise entre 100 et <500. Si c'est envisageable individuellement ce n'est pas prudent pour un preferences generique du fait des dependances.
- 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 depots, etc) sans avoir a decaler toutes les autres entrees dans le preferences et c'est ainsi beaucoup plus lisible et donc facile de faire la differences entre les differentes priorites des depots a la lecture du apt-cache policy.
- Comment piocher dans les differents depots du sources.list?
Tout d'abord, pour que le fichier preferences soit pris en compte apres une modification, il vous faut mettre a jour APT en utilisant soit la commande apt-get update, soit la commande aptitude update. Verifiez ensuite a l'aide de apt-cache policy que les priorites sont correctes.
Il y a deux manieres d'indiquer a APT d'aller piocher dans des depots differents que ceux de la branche principale (les commandes qui suivent sont valable a 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 superieure a celle qui se trouve dans votre branche principale. Par exemple, cette branche est testing et vous voulez utiliser le paquet ardour present dans sid parce qu'il est plus recent, vous utiliserez cette commande :
Code:
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 dependances sont mieux gerees.
Vous utiliserez apt-get install paquet/<branche> si vous voulez downgrader la version d'un paquet. Par exemple, votre branche principale est unstable et vous voulez installer la version d'ardour de testing parce qu'elle est moins boguee, vous utiliserez cette commande :
Code:
apt-get install ardour/testing
Le probleme c'est que APT voudra remettre a niveau le paquet downgrade lors de la prochaine mise a jour. Il faut donc bloquer le paquet dans sa version nouvellement installee. Pour cela il y a deux possibilites :
Soit utiliser la commande aptitude hold paquet. Pour debloquer le paquet il suffira de lancer la commande aptitude unhold paquet.
Soit etiqueter le paquet dans le fichier preferences avec une priorite de 1001 et en renseignant la ligne Pin avec le numero de version du paquet bloque ou avec la variable release a=now.
Par exemple si je veux downgrader ardour de la version 1:2.8.11-1 presente dans sid a la version 1:2.8.9-1 presente dans testing, j'effectuerai un aptitude install ardour/testing avant d'ajouter cette entree dans le preferences :
Code:
Package: ardour Pin: version 1:2.8.9-1 Pin-Priority: 1001
Si vous avez un doute sur le numero de version a inserer dans la ligne pin, un apt-cache policy paquet vous renseignera, dans le cas de notre exemple :
Code:
- apt-cache policy ardour
ardour:
Installé : 1:2.8.11-1 Candidat : 1:2.8.11-1
Table de version :
- 1:2.8.11-1 0
500 http://ftp2.fr.debian.org sid/main Packages 100 /var/lib/dpkg/status 1:2.8.9-1 0 500 http://ftp2.fr.debian.org squeeze/main Packages
Encore plus simple, vous pouvez assigner a la ligne Pin la variable de release a=now, variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.
Code:
Package: ardour Pin: release a=now Pin-Priority: 1001
Dans notre exemple, avec cette entree, le paquet ardour qui est installe maintenant sera forcement installe meme s'il s'agit d'un retour en arriere, donc ne sera pas mis a jour.
Pour debloquer le paquet il suffira d'enlever son entree du fichier preferences.
N'hesitez pas a utiliser 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, ca permet de verifier que le comportement de la commande est bien celui que vous attendez. Si tout se passe bien effectuez reellement la commande en enlevant l'option -s. cette option fonctionne egalement avec aptitude, ou encore en combinaison avec l'option -t (par exemple apt-get install -s -t unstable ardour), aussi pour effectuer des mises a jours (par exemple aptitude safe-upgrade -s), etc... C'est une securite non negligeable.
Stable
L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!
Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.
Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :
Code:
- stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
- stable security
deb http://security.debian.org/ stable/updates main contrib non-free
- deb-src http://security.debian.org/ stable/updates main contrib non-free
- stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
- deb-src http://mirror.home-dn.net/debian-multimedia stable main
- backports
deb http://www.backports.org/debian lenny-backports main contrib non-free
Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences. Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :
Code: Package: * Pin: release a=lenny-backports Pin-Priority: 200
Pour installer un paquet depuis les backports, utilisez l'option -t :
apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.
Pour plus d'informations, reportez vous au : site des backports (en anglais)
Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :
Code:
- stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
- stable security
deb http://security.debian.org/ stable/updates main contrib non-free
- deb-src http://security.debian.org/ stable/updates main contrib non-free
- stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
- deb-src http://mirror.home-dn.net/debian-multimedia stable main
- testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
- testing security
deb http://security.debian.org/ testing/updates main contrib non-free
- deb-src http://security.debian.org/ testing/updates main contrib non-free
- testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
- deb-src http://mirror.home-dn.net/debian-multimedia testing main
- sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
- sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
- deb-src http://mirror.home-dn.net/debian-multimedia sid main
Accompagne de ce fichier preferences :
Code: Package: * Pin: release o=Debian,a=stable Pin-Priority: 900
Package: * Pin: release o=Debian,a=testing Pin-Priority: -10
Package: * Pin: release o=Debian,a=unstable Pin-Priority: -10
Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.
Stable
L'interet de la branche stable est sa stabilite (etonnant non?). Donc la melanger avec les autres branches est souvent une tres mauvaise idee. Si vous avez besoin de paquets plus recents preferez les backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!
Etant donne qu'il est fortement deconseille de melanger stable et les branches superieures, il est preferable de n'avoir que ses entrees dans le sources.list. Le preferences est donc inutile, sauf si vous souhaitez utiliser les depots backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.
Le sources.list adequat dans ce cas peut-etre le suivant (changez les adresses des depots stable par d'autres que vous prefereriez si vous le souhaitez) :
Code:
- stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
- stable security
deb http://security.debian.org/ stable/updates main contrib non-free
- deb-src http://security.debian.org/ stable/updates main contrib non-free
- stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
- deb-src http://mirror.home-dn.net/debian-multimedia stable main
- backports
deb http://www.backports.org/debian lenny-backports main contrib non-free
Les preferences des backports ont par defaut une valeur de 1. Si vous souhaitez choisir par vous meme quand installer une eventuelle nouvelle version disponible dans ces depots, vous n'avez pas besoin de preferences. Si vous souhaitez que le paquet installe depuis les backports soit mis a jour automatiquement en cas de nouvelle version disponible dans ces depots, alors vous n'aurez besoin que de cette seule entree dans le fichier preferences :
Code: Package: * Pin: release a=lenny-backports Pin-Priority: 200
Pour installer un paquet depuis les backports, utilisez l'option -t :
apt-get install -t lenny-backports paquet ou aptitude install -t lenny-backports paquet.
Pour plus d'informations, reportez vous au : site des backports (en anglais)
Si en depit du bon sens et malgre ces avertissements vous souhaitez avoir stable comme branche principale mais pouvoir piocher dans les autres branches, alors il vous faudra un sources.list de ce genre :
Code:
- stable
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
- stable security
deb http://security.debian.org/ stable/updates main contrib non-free
- deb-src http://security.debian.org/ stable/updates main contrib non-free
- stable volatile
deb http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- deb-src http://volatile.debian.org/debian-volatile stable/volatile main contrib non-free
- stable multimedia
deb http://mirror.home-dn.net/debian-multimedia stable main
- deb-src http://mirror.home-dn.net/debian-multimedia stable main
- testing
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
- testing security
deb http://security.debian.org/ testing/updates main contrib non-free
- deb-src http://security.debian.org/ testing/updates main contrib non-free
- testing multimedia
deb http://mirror.home-dn.net/debian-multimedia testing main
- deb-src http://mirror.home-dn.net/debian-multimedia testing main
- sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
- sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
- deb-src http://mirror.home-dn.net/debian-multimedia sid main
Accompagne de ce fichier preferences :
Code: Package: * Pin: release o=Debian,a=stable Pin-Priority: 900
Package: * Pin: release o=Debian,a=testing Pin-Priority: -10
Package: * Pin: release o=Debian,a=unstable Pin-Priority: -10
Si vous vous contentez de faire les mises a jours et d'installer normalement des paquets, votre systeme sera exactement dans le meme etat que s'il n'avait que le depots stables sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non present dans les depots stables mais present dans une autre branche.
Par contre si vous voulez installer un paquet d'une autre branche, vous ne pourrez le faire que de façon volontaire. Avec ce preferences il faut vraiment le vouloir pour casser sa Debian stable.
Sid
Comme testing, sid n'est pas toujours complete d'ou l'utilite d'avoir les autres branches facilement accessibles. Cela dit il faut quand meme surveiller ce qu'il se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise aptitude qui propose souvent des solutions complexes.
Pour le sources.list suivant :
Code:
- lenny
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
- lenny security
deb http://security.debian.org/ lenny/updates main contrib non-free
- deb-src http://security.debian.org/ lenny/updates main contrib non-free
- lenny volatile
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
- deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
- lenny multimedia
deb http://mirror.home-dn.net/debian-multimedia lenny main
- deb-src http://mirror.home-dn.net/debian-multimedia lenny main
- squeeze
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
- squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
- deb-src http://security.debian.org/ squeeze/updates main contrib non-free
- squeeze multimedia
deb http://mirror.home-dn.net/debian-multimedia squeeze main
- deb-src http://mirror.home-dn.net/debian-multimedia squeeze main
- sid
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
- deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
- sid multimedia
deb http://mirror.home-dn.net/debian-multimedia sid main
- deb-src http://mirror.home-dn.net/debian-multimedia sid main
Il n'y a pas besoin de fichier preferences puisque par defaut tous les depots ont la meme priorite, et a priorites egales c'est le paquet le plus recent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installe. Pour les paquets qui sont present dans differents depots et qui ont strictement le meme numero de version (60 a 90% des paquets testing/sid) c'est l'ordre dans le sources.list qui joue, mais ça n'a dans le fond aucune importance puisque ce sont strictement les meme paquets.
Si vous souhaitez utiliser les depots experimental, utilisez un sources.list complet comme celui presente dans le paragraphe Testing. Les depots experimental ont par defaut une priorite de 1, sauf ceux des depots experimental multimedia qui sont a 500, donc faites y attention. Autant dire que les depots experimental sont tout a fait dispensables, a plus fortes raison ceux de multimedia, mais si vous tenez a ces depots alors utilisez ce fichier preferences pour eviter les problemes :
Code: Package: * Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages Pin-Priority: 1