« L'épinglage de paquets via le fichier /etc/apt/preferences » : différence entre les versions

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche
m (Mise en page)
m (Dezix a déplacé la page L'etiquetage de paquets via le fichier /etc/apt/preferences vers L'épinglage de paquets via le fichier /etc/apt/preferences : Amélioration de la traduction de "pinniing")
 
(79 versions intermédiaires par 7 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Qu'est-ce que sont l'épinglage et le fichier /etc/apt/preferences? ==


L'épinglage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier '''/etc/apt/preferences'''. Une installation fraiche ne comporte pas de fichier preferences, '''il faut donc le creer soi même'''.


Chaque dépôt présent dans le [[Sources_de_paquets_:_les_bases|sources.list]] se voit attribué une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.


Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro 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 mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.


== Qu'est-ce que sont l'etiquetage et le fichier /etc/apt/preferences? ==
Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée 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 différentes branches de debian''' (par exemple sid en restant testing ou stable) '''ou bien lors de l'ajout de dépôts 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'épinglage peut très vite casser votre système.'''


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'''.
Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante,
ses effets peuvent être difficiles à comprendre et à gérer.
Vous devriez la considérer comme une Fonction Avancée.


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.
Ce n'est pas moi qui le dis, c'est la documentation officielle... donc la première chose à se demander c'est ''ai-je vraiment besoin d'épingler des paquets?'' Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.


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.
Pour bien saisir le fonctionnement de l'épinglage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


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.'''


Code:
Voici les fils de discussion du forum Debian-fr qui ont servi à faire ce tutoriel:
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:
 
[http://forum.debian-fr.org/viewtopic.php?f=1&t=19298|Question concernant le fichier preferences]
[http://forum.debian-fr.org/viewtopic.php?f=3&t=20240|/etc/apt/preferences et sa première non-mise à jour]
[http://forum.debian-fr.org/viewtopic.php?f=1&t=22883&start=0|Pourquoi les preferences du T&A sont foireux?]
[http://forum.debian-fr.org/viewtopic.php?f=3&t=24530|mettre en blacklist des mises à jour APT]
[http://forum.debian-fr.org/viewtopic.php?f=3&t=25746|Énervant manque d'explications: fichier preferences]
 
Vous pouvez egalement trouver des informations sur l'etiquetage en tapant '''man apt_preferences''' dans un terminal.


[http://forum.debian-fr.org/viewtopic.php?f=1&t=19298| Question concernant le fichier preferences]<br/>
[http://forum.debian-fr.org/viewtopic.php?f=3&t=20240| /etc/apt/preferences et sa première non-mise à jour]<br/>
[http://forum.debian-fr.org/viewtopic.php?f=1&t=22883&start=0| Pourquoi les preferences du T&A sont foireux?]<br/>
[http://forum.debian-fr.org/viewtopic.php?f=3&t=24530| mettre en blacklist des mises à jour APT]<br/>
[http://forum.debian-fr.org/viewtopic.php?f=3&t=25746| Énervant manque d'explications: fichier preferences]<br/>




Vous pouvez également trouver des informations sur l'épinglage en tapant '''man apt_preferences''' dans un terminal.


== Structure du fichier /etc/apt/preferences ==
== Structure du fichier /etc/apt/preferences ==


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:


Ce fichier est constitue d'une ou plusieurs entrees separees par des lignes blanches. Un exemple d'entrees de fichier preferences:
Code:
   Package: *
   Package: *
   Pin: release a=unstable o=Debian
   Pin: release a=unstable o=Debian
Ligne 53 : Ligne 45 :




On constate que chaque entree est de la forme suivante:
On constate que chaque entrée est de la forme suivante:


Code:
   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 negatif)
   Pin-Priority: P (ou P est un entier positif ou négatif)
 
 
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.
Pour compléter au mieux ces entrées nous nous servirons de la commande '''apt-cache policy''' qui donne des résultats de ce type:


  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


Detaillons ligne par ligne les entrees du fichier preferences:


'''- Ligne Package'''
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.


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''.


Détaillons ligne par ligne les entrées du fichier preferences:


'''- 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: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.
==== Ligne Package ====
C'est là qu'est indiqué le nom du paquet épinglé ou * si l'épinglage concerne tout un groupe de paquets défini par la ligne ''Pin''.


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:
==== Ligne Pin ====
Cette ligne servira à indiquer quels paquets seront concernés par l'épinglage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne ''release'' du ''apt-cache policy'', dans l'exemple précédent: r''elease v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib''.


Code:
Les fichiers de configuration des dépôts se trouvent dans '''/var/lib/apt/lists/'''. La valeur de ces variables (''v,o,a,n,...'') est indiquée 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:
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


  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.


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:


Code:
   Package: *
   Package: *
   Pin: release o=Debian,a=stable
   Pin: release o=Debian,a=stable
Ligne 110 : Ligne 95 :
Se lit donc comme suit:
Se lit donc comme suit:


Code:
  Package: *                                 -> L'ensemble des paquets
Package: * -> L'ensemble des paquets
  Pin: release o=Debian,a=stable   -> se trouvant dans des dépôts dont la variable Origin (o) a pour valeur "Debian"
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"
                                                      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 entree ci:
Et cette entrée ci:


Code:
   Package: ardour
   Package: ardour
   Pin: release a=now
   Pin: release a=now
   Pin-Priority: 1001
   Pin-Priority: 1001


Se lit donc comme suit:
Se lit donc comme suit:


Code:
  Package: ardour                         -> Le paquet ardour
Package: ardour -> Le paquet ardour
  Pin: release a=unstable               -> se trouvant dans des dépôts dont la variable Suite (a) a pour valeur "now"
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
Pin-Priority: 1001 -> a une priorite de 1001
 
 
Voyons maintenant quelles peuvent etre ces valeurs:
 
Code:
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
Voyons maintenant quelles peuvent être ces valeurs:
dans notre exemple -> Pin: release a=stable


v= correspond a Version
  o= correspond à Origin
dans notre exemple -> Pin: release v=5.0.5
  dans notre exemple -> Pin: release o=Debian
 
  l= correspond à label
  dans notre exemple -> Pin: release l=Debian
 
  a= correspond à Suite
  dans notre exemple -> Pin: release a=stable
 
  v= correspond à Version
  dans notre exemple -> Pin: release v=5.0.5
 
  c= correspond à Components
  dans notre exemple -> Pin: release c=contrib
 
  n= correspond à Codename
  dans notre exemple -> Pin: release n=stable


c= correspond a Components
dans notre exemple -> Pin: release c=contrib


n= correspond a Codename
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.
dans notre exemple -> Pin: release n=stable


==== Ligne Pin-Priority ====


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.
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
  Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
 
  990 <= P < 1000
  La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
 
  500 <= P < 990
  La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
 
  100 <= P < 500
  La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
 
  0 < P < 100
  La version sera installée si aucune version du paquet n'est installée.
 
  P < 0
  Cette priorité empêche l'installation de la version.


'''- 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:
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 présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


Code:
P > 1000
Cette priorite entraine l'installation du paquet meme s'il s'agit d'un retour en arriere.


990 < P <=1000
- '''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 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.
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
- '''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.
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
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 priorité de 990. On comprend donc aisément qu'avoir une priorité =>990 pour la branche principale perturbe cette option.
La version sera installee si aucune version du paquet n'est installee.


P < 0
Les méthodes pour piocher dans les différents 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.
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.
- '''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.


- '''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.
Si on veut les "suivre", c'est a dire qu'ils se mettent à jour automatiquement si une nouvelle version est placée dans ces dépôts 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.


- '''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.
- 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''.


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.
==== Comment piocher dans les différents dépôts du sources.list? ====


- '''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.
Tout d'abord, pour que le fichier preferences soit pris en compte après 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.


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''.
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''):




'''- Comment piocher dans les differents depots du sources.list?'''
- 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:


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
   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.
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.




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 :
- Vous utiliserez '''apt-get install paquet/branche''' si vous voulez rétrograder 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 boguée, vous utiliserez cette commande:


Code:
   apt-get install ardour/testing
   apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé 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 possibilités:




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 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 utiliser la commande '''aptitude hold paquet'''. Pour debloquer le paquet il suffira de lancer la commande '''aptitude unhold paquet'''. La commande '''aptitude search ~U''' permet de voir la liste des paquets a mettre a jour, les paquets que vous avez bloque par cette methode y apparaitront precedes d'un '''h'''.


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'''.
- Soit '''épingler le paquet''' dans le fichier preferences '''avec une priorite de 1001''' et en renseignant la ligne ''Pin'' avec le numéro 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 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 :
Par exemple si je veux rétrograder 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:


Code:
   Package: ardour
   Package: ardour
   Pin: version 1:2.8.9-1
   Pin: version 1:2.8.9-1
Ligne 235 : Ligne 218 :




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:
Si vous avez un doute sur le numéro de version à insérer 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


  # 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.
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''.


Code:
   Package: ardour
   Package: ardour
   Pin: release a=now
   Pin: release a=now
Ligne 259 : Ligne 239 :




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.
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.
 
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.
 




'''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 réellement, ç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 ==


L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. '''Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!'''


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 depots backports, la compilation, ou tout simplement utilisez une autre branche principale a la place!'''
Etant donné qu''''il est fortement déconseillé de mélanger stable et les branches supérieures''', il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. '''Installez uniquement les paquets des backports dont vous avez vraiment besoin'''.
 
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 eventuellemnt 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
 


Le sources.list adéquat dans ce cas peut-être celui ci:


'''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.
'''ATTENTION!''', évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter
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 :
à vos besoins le sources.list qui suit.
Cette [[Sources_de_paquets_:_les_bases|page]] sur le sources.list peut vous y aider.


Code:
# stable
Package: *
deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free
Pin: release a=lenny-backports
#deb-src http://ftp.fr.debian.org/debian/ jessie main contrib non-free
Pin-Priority: 200
# stable security
deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free
# stable volatile
deb http://ftp.fr.debian.org/debian/ jessie-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ jessie-updates main non-free contrib
# backports
deb http://backports.debian.org/debian-backports jessie-backports main contrib non-free




Les dépôts backports ont par défaut une priorité de 100.
Pour installer un paquet depuis les backports, utilisez l'option ''-t'':
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'''.
apt-get install -t jessie-backports paquet
 
aptitude install -t jessie-backports paquet
 
Pour plus d'informations, reportez vous au [http://backports.org/dokuwiki/doku.php|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


Pour plus d'informations, reportez vous au [http://backports-master.debian.org/ site des backports] (en anglais)


# 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
Si en dépit du bon sens et malgré 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:
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


'''ATTENTION!''', évitez le copier/coller "bête et mechant" et essayez de comprendre et d'adapter
à vos besoins le sources.list qui suit.
Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.


Accompagne de ce fichier preferences:
# 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://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
# 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
# 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


Code:
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 900


Package: *
Accompagné de ce fichier preferences:
Pin: release o=Debian,a=testing
Pin-Priority: -10


Package: *
Package: *  
Pin: release o=Debian,a=unstable
Pin: release a=stable
Pin-Priority: -10
Pin-Priority: 900
Package: *
Pin: release a=testing
Pin-Priority: -10
Package: *
Pin: release 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.
Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent 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.
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.


== Testing ==
== Testing ==


Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. '''Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'épinglage est plutot recommandé'''.


Les depots testing dependent de l'arrivee de paquets en provenance de sid. Il se peut donc que ces depots ne soient pas complets ou entrainent des problemes de dependances. Installer une testing seule c'est un peu installer une version a trous de Debian puisqu'elle est tres souvent incomplete, du coup l'etiquetage est plutot recommande
En testing il vaut mieux utiliser ''dist-upgrade'' à la place de ''upgrade'' (ou les équivalents pour ''aptitude''), car de toutes façons durant le cycle de développement le ''dist-upgrade'' sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


En testing il vaut mieux utiliser dist-upgrade a la place de upgrade (ou les equivalents pour ''aptitude''), car de toutes façons durant le cycle de developpement le dist-upgrade sera souvent indispensable. N'hesitez pas a user et abuser de la simulation (option ''-s'' d'''apt-get'' et ''aptitude'').


Vous pouvez donc utiliser un sources.list complet tel que celui là:


Vous pouvez donc utiliser un sources.list complet tel que celui la:
'''ATTENTION!''', évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter
a vos besoins le sources.list qui suit.
Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.


Code:
# stable
# lenny
deb http://ftp.fr.debian.org/debian/ stable main contrib non-free
deb http://ftp.fr.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ lenny main contrib non-free
 
# stable security
# lenny security
deb http://security.debian.org/ stable/updates main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ stable/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free
 
# stable volatile
# lenny volatile
deb http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
 
# lenny multimedia
# testing
deb http://mirror.home-dn.net/debian-multimedia lenny main
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
 
# squeeze
# sid
deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
deb http://ftp.fr.debian.org/debian/ sid main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ sid main contrib non-free
 
# squeeze security
deb http://security.debian.org/ squeeze/updates main contrib non-free
# experimental
#deb-src http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
#deb-src http://ftp.fr.debian.org/debian/ experimental 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
 
 
# experimental
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free
 
# experimental multimedia
deb http://mirror.home-dn.net/debian-multimedia experimental main
#deb-src http://mirror.home-dn.net/debian-multimedia experimental main




Avec ce fichier preferences:
Avec ce fichier preferences:


Code:
Package: *
Package: *
Pin: release a=testing
Pin: release o=Unofficial Multimedia Packages,a=testing
Pin-Priority: 900
Pin-Priority: 900
Package: *
Pin: release a=stable
Pin-Priority: 900
Package: *
Pin: release a=unstable
Pin-Priority: 90


Package: *
Pin: release o=Debian,a=testing
Pin-Priority: 900


Package: *
Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option ''-t''.
Pin: release o=Unofficial Multimedia Packages,a=stable
Pin-Priority: 900


Package: *
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''
Pin: release o=Debian,a=stable
Pin-Priority: 900


Package: *
== Sid ==
Pin: release o=volatile.debian.org,a=stable
Pin-Priority: 900


Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable
Pin-Priority: 90


Package: *
Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui se passe lors des modifications sur les paquets, et ce d'autant plus quand l'on utilise ''aptitude'' qui propose souvent des solutions complexes.
Pin: release o=Debian,a=unstable
Pin-Priority: 90


Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental
Pin-Priority: 1


Pour le sources.list suivant:


Vous serez ainsi en testing par defaut, d'eventuels paquets manquants seront completes par les depots de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option -t.
'''ATTENTION!''', évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter
à vos besoins le sources.list qui suit.
Cette [[Sources_de_paquets_:_les_bases| page]] sur le sources.list peut vous y aider.


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 experimental multimedia, vous pouvez parfaitement retirer sans problemes toutes references aux depots de la branche experimental du sources.list et du fichier preferences.
# 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://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
# 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
# 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
'''Il n'y a pas besoin de fichier ''preferences'' puisque par défaut tous les dépôts ont la même priorité''', et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 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 mêmes paquets.


Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing.
'''Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!'''


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.
== Multimédia ==


Pour le sources.list suivant:
'''Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système'''. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et '''attribuez leur une priorité inférieure à celles des dépôts officiels'''.


Code:
Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :
# 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
Pour stable :
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
# stable multimedia
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb http://www.deb-multimedia.org jessie main non-free
#deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
#deb-src http://www.deb-multimedia.org jessie main non-free


# lenny multimedia
Pour testing :
deb http://mirror.home-dn.net/debian-multimedia lenny main
#deb-src http://mirror.home-dn.net/debian-multimedia lenny main
# testing multimedia
deb http://www.deb-multimedia.org testing main non-free
#deb-src http://www.deb-multimedia.org testing main non-free




# squeeze
Pour sid :
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
# sid multimedia
deb http://www.deb-multimedia.org sid main non-free
#deb-src http://www.deb-multimedia.org sid main 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
Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :
deb http://mirror.home-dn.net/debian-multimedia squeeze main
#deb-src http://mirror.home-dn.net/debian-multimedia squeeze main


Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 100


# 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
Il existe aussi des dépôts multimedia pour la branche experimental :
deb http://mirror.home-dn.net/debian-multimedia sid main
#deb-src http://mirror.home-dn.net/debian-multimedia sid main


# experimental multimedia
deb http://www.deb-multimedia.org experimental main
#deb-src http://www.deb-multimedia.org experimental 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:
'''Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :'''


Code:
Package: *
Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial Multimedia Packages
Pin: release o=Unofficial Multimedia Packages,a=experimental
Pin-Priority: 1
Pin-Priority: 1

Dernière version du 4 octobre 2023 à 18:02

Qu'est-ce que sont l'épinglage et le fichier /etc/apt/preferences?

L'épinglage (ou pinning en VO) consiste à assigner à un paquet (ou à un groupe de paquets) une priorité d'installation différente de celle qu'il(s) a (ont) normalement. Cela se fait par l'intermédiaire du fichier /etc/apt/preferences. Une installation fraiche ne comporte pas de fichier preferences, il faut donc le creer soi même.

Chaque dépôt présent dans le sources.list se voit attribué une priorité d'installation. Par défaut tous les dépôts ont la même priorité (500 sauf exception, les dépôts experimental par exemple qui ont une priorité par défaut de 1, les dépôts backports qui ont une priorité de 100), et à priorités égales c'est le numéro de version des paquets qui joue, le plus récent est prioritaire.

Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro 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 mêmes paquets. Donc par défaut, avec un sources.list comportant toutes les branches de Debian et sans preferences, ce sont les paquets les plus récents et qui ne viennent pas d'experimental qui ont la priorité, ce qui correspond à sid.

Le fichier de preferences sert à modifier les priorités qui sont affectées aux paquets par APT, et ce par l'intermédiaire de règles s'appliquant à un, plusieurs ou un ensemble de paquets (et non à des dépôts, c'est un abus de langage qui peut nuire à la compréhension du fonctionnement des règles). Cette méthode peut être utilisée 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 différentes branches de debian (par exemple sid en restant testing ou stable) ou bien lors de l'ajout de dépôts 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'épinglage peut très vite casser votre système.

Bien que la fonction de pinning d'APT décrite dans apt_preferences (5) soit puissante, 
ses effets peuvent être difficiles à comprendre et à gérer.
Vous devriez la considérer comme une Fonction Avancée.


Ce n'est pas moi qui le dis, c'est la documentation officielle... donc la première chose à se demander c'est ai-je vraiment besoin d'épingler des paquets? Certains des chapitres suivants devraient vous aider à répondre à cette question, mais cette réponse dépendra en très grande partie quelle branche de Debian vous avez choisi d'utiliser.

Pour bien saisir le fonctionnement de l'épinglage, je vous recommande fortement de lire ce tutoriel en entier, voire même plusieurs fois. Certaines informations sont répétées dans différents paragraphes, j'espère que ce n'est pas redondant mais que ça facilite la compréhension du sujet et évite de faire des erreurs.


Voici les fils de discussion du forum Debian-fr qui ont servi à 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 également trouver des informations sur l'épinglage en tapant man apt_preferences dans un terminal.

Structure du fichier /etc/apt/preferences

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: *
  Pin: release a=unstable o=Debian
  Pin-Priority: 90
  
  Package: ardour
  Pin: release a=unstable
  Pin-Priority: 1001


On constate que chaque entrée est de la forme suivante:

  Package: * ou nom de paquet
  Pin: release a=,n=,v=,c=,o=,l=
  Pin-Priority: P (ou P est un entier positif ou négatif)


Pour compléter au mieux ces entrées nous nous servirons de la commande apt-cache policy qui donne des résultats de ce type:

 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 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

C'est là qu'est indiqué le nom du paquet épinglé ou * si l'épinglage concerne tout un groupe de paquets défini par la ligne Pin.

Ligne Pin

Cette ligne servira à indiquer quels paquets seront concernés par l'épinglage de cette entrée. Pour cela on se sert d'une (ou plusieurs) variable(s) indiquée(s) à la ligne release du apt-cache policy, dans l'exemple précédent: release v=5.0.5,o=Debian,a=stable,n=stable,l=Debian,c=contrib.

Les fichiers de configuration des dépôts se trouvent dans /var/lib/apt/lists/. La valeur de ces variables (v,o,a,n,...) est indiquée 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:

 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 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:

  Package: *
  Pin: release o=Debian,a=stable
  Pin-Priority: 900


Se lit donc comme suit:

 Package: *                                 -> L'ensemble des paquets
 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"
 Pin-Priority: 900                          -> ont une priorite de 900


Et cette entrée ci:

  Package: ardour
  Pin: release a=now
  Pin-Priority: 1001


Se lit donc comme suit:

 Package: ardour                         -> Le paquet ardour
 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


Voyons maintenant quelles peuvent être ces valeurs:

 o= correspond à Origin
 dans notre exemple -> Pin: release o=Debian
 
 l= correspond à label
 dans notre exemple -> Pin: release l=Debian
 
 a= correspond à Suite
 dans notre exemple -> Pin: release a=stable
 
 v= correspond à Version
 dans notre exemple -> Pin: release v=5.0.5
 
 c= correspond à Components
 dans notre exemple -> Pin: release c=contrib
 
 n= correspond à Codename
 dans notre exemple -> Pin: release n=stable


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

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
 Cette priorité entraîne l'installation du paquet même s'il s'agit d'un retour en arrière.
 
 990 <= P < 1000
 La version sera installée, même si elle n'appartient pas à la distribution par défaut ; mais elle ne sera pas installée si la version installée est plus récente.
 
 500 <= P < 990
 La version sera installée, sauf s'il existe une version appartenant à la distribution par défaut ou si la version installée est plus récente.
 
 100 <= P < 500
 La version sera installée, sauf s'il existe une version appartenant à une autre distribution ou si la version installée est plus récente.
 
 0 < P < 100
 La version sera installée si aucune version du paquet n'est installée.
 
 P < 0
 Cette priorité empêche l'installation de la version.


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 présents dans le sources.list ne servant qu'à y piocher des paquets si besoin est.


- 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 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 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 défaut et a donc une priorité de 990. On comprend donc aisément qu'avoir une priorité =>990 pour la branche principale perturbe cette option.

Les méthodes pour piocher dans les différents 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 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 à jour automatiquement si une nouvelle version est placée dans ces dépôts 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é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 différents dépôts du sources.list?

Tout d'abord, pour que le fichier preferences soit pris en compte après 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 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 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


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.


- Vous utiliserez apt-get install paquet/branche si vous voulez rétrograder 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 boguée, vous utiliserez cette commande:

  apt-get install ardour/testing


Le problème c'est que APT voudra remettre à niveau le paquet rétrogradé 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 possibilités:


- 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 épingler le paquet dans le fichier preferences avec une priorite de 1001 et en renseignant la ligne Pin avec le numéro de version du paquet bloqué ou avec la variable release a=now.


Par exemple si je veux rétrograder 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
  Pin: version 1:2.8.9-1
  Pin-Priority: 1001


Si vous avez un doute sur le numéro de version à insérer dans la ligne Pin, un apt-cache policy paquet vous renseignera, dans le cas de notre exemple:

 # 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 à la ligne Pin la variable de release a=now, variable que l'on pourrait expliquer par paquet(s) installe(s) maintenant.

  Package: ardour
  Pin: release a=now
  Pin-Priority: 1001


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'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 réellement, ç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

L'intérêt de la branche stable est sa stabilité (étonnant non?). Donc la mélanger avec les autres branches est souvent une très mauvaise idée. Si vous avez besoin de paquets plus récents préférez les dépôts backports, la compilation, ou tout simplement utilisez une autre branche principale à la place!

Etant donné qu'il est fortement déconseillé de mélanger stable et les branches supérieures, il est préférable de n'avoir que ses entrées dans le sources.list. Le fichier preferences est donc inutile, sauf éventuellement si vous souhaitez utiliser les dépôts backports. Dans ce cas, surtout n'en abusez pas. Installez uniquement les paquets des backports dont vous avez vraiment besoin.

Le sources.list adéquat dans ce cas peut-être celui ci:

ATTENTION!, évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter 
à vos besoins le sources.list qui suit.
Cette page sur le sources.list peut vous y aider.
# stable
deb http://ftp.fr.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ jessie main contrib non-free

# stable security
deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free

# stable volatile
deb http://ftp.fr.debian.org/debian/ jessie-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ jessie-updates main non-free contrib

# backports
deb http://backports.debian.org/debian-backports jessie-backports main contrib non-free


Les dépôts backports ont par défaut une priorité de 100. Pour installer un paquet depuis les backports, utilisez l'option -t:

apt-get install -t jessie-backports paquet
aptitude install -t jessie-backports paquet


Pour plus d'informations, reportez vous au site des backports (en anglais)


Si en dépit du bon sens et malgré 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:

ATTENTION!, évitez le copier/coller "bête et mechant" et essayez de comprendre et d'adapter 
à vos besoins le sources.list qui suit.
Cette  page sur le sources.list peut vous y aider.
# 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://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib


# 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


# 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


Accompagné de ce fichier preferences:

Package: * 
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=testing
Pin-Priority: -10

Package: *
Pin: release a=unstable
Pin-Priority: -10


Si vous vous contentez de faire les mises à jour et installer normalement des paquets, votre système sera exactement dans le même état que s'il n'avait que le dépôt stable sans preferences, y compris si vous essayez d'installer sans le savoir un paquet non présent dans les dépôts stables mais présent 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.

Testing

Les dépôts testing dépendent de l'arrivée de paquets en provenance de sid. Il se peut donc que ces dépôts ne soient pas complets ou entrainent des problèmes de dépendances. Installer une testing seule c'est un peu installer une version à trous de Debian puisqu'elle est très souvent incomplète, du coup l'épinglage est plutot recommandé.

En testing il vaut mieux utiliser dist-upgrade à la place de upgrade (ou les équivalents pour aptitude), car de toutes façons durant le cycle de développement le dist-upgrade sera souvent indispensable. N'hésitez pas à user et abuser de la simulation (option -s d'apt-get et aptitude).


Vous pouvez donc utiliser un sources.list complet tel que celui là:

ATTENTION!, évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter 
a vos besoins le sources.list qui suit.
Cette  page sur le sources.list peut vous y aider.
# 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://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib


# 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


# 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


# experimental
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free
#deb-src http://ftp.fr.debian.org/debian/ experimental main contrib non-free


Avec ce fichier preferences:

Package: *
Pin: release a=testing
Pin-Priority: 900

Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=unstable
Pin-Priority: 90


Vous serez ainsi en testing par défaut, d'éventuels paquets manquants seront complétés par les dépôts de stable. Et vous pourrez toujours choisir d'installer des paquets de sid (voire experimental) en utilisant l'option -t.

Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!

Sid

Comme testing, sid n'est pas toujours complète d'où l'utilité d'avoir les autres branches facilement accessibles. Cela dit il faut quand même surveiller ce qui 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:

ATTENTION!, évitez le copier/coller "bête et méchant" et essayez de comprendre et d'adapter 
à vos besoins le sources.list qui suit.
Cette  page sur le sources.list peut vous y aider.
# 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://ftp.fr.debian.org/debian/ stable-updates main non-free contrib
#deb-src http://ftp.fr.debian.org/debian/ stable-updates main non-free contrib


# 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


# 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


Il n'y a pas besoin de fichier preferences puisque par défaut tous les dépôts ont la même priorité, et à priorités égales c'est le paquet le plus récent qui est prioritaire. Ce qui veut dire que c'est le paquet de sid qui sera installé. Pour les paquets qui sont présents dans différents dépôts et qui ont strictement le même numéro de version (60 à 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 mêmes paquets.

Si vous souhaitez utiliser les dépôts experimental, utilisez un sources.list complet comme celui présenté dans le paragraphe Testing. Les dépôts experimental ont par défaut une priorité de 1 et sont tout à fait facultatifs!

Multimédia

Les dépôts multimedia ne sont pas des dépôts officiels et peuvent troubler la stabilité de votre système. Si vous souhaitez les utiliser quand même, assurez vous d'avoir une bonne raison pour cela et attribuez leur une priorité inférieure à celles des dépôts officiels.

Les adresses de ces dépôts à ajouter au sources.list sont les suivantes :

Pour stable :

# stable multimedia
deb http://www.deb-multimedia.org jessie main non-free
#deb-src http://www.deb-multimedia.org jessie main non-free

Pour testing :

# testing multimedia
deb http://www.deb-multimedia.org testing main non-free
#deb-src http://www.deb-multimedia.org testing main non-free


Pour sid :

# sid multimedia
deb http://www.deb-multimedia.org sid main non-free
#deb-src http://www.deb-multimedia.org sid main non-free


Une entrée de ce style dans le fichier preferences devrait éviter les problèmes :

Package: *
Pin: release o=Unofficial Multimedia Packages
Pin-Priority: 100


Il existe aussi des dépôts multimedia pour la branche experimental :

# experimental multimedia
deb http://www.deb-multimedia.org experimental main
#deb-src http://www.deb-multimedia.org experimental main


Les dépôts experimental officiels ont par défaut une priorité de 1, par contre les dépôts experimental multimedia sont à 500, donc faites y attention. Autant dire que les dépôts experimental sont tout à fait facultatifs, à plus forte raison ceux de experimental multimedia. Vous pouvez parfaitement retirer sans problèmes toutes références aux dépôts de la branche experimental du sources.list et du fichier preferences. Mais si vous souhaitez quand même utiliser les dépôts experimental multimedia, ajoutez l'entrée qui suit à votre fichier preferences :


Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental
Pin-Priority: 1