Debian : prenez une longueur d’avance avec le Pinning

La grande force de Debian, c’est bien sûr sa stabilité. Mais on peut parfois se sentir frustré de ne pas disposer de la dernière version de tel ou tel paquet. Le pinning sert à combler cette frustration.

La politique de diffusion des releases de Debian est aux antipodes de celle pratiquée par Canonical. En effet, les nouvelles versions de Debian ne sortent que quand elle sont jugées stables, sans obligation de fréquence. Dans la pratique, il faut attendre environ deux ans entre chaque release. C’est cette politique qui donne à Debian sa stabilité légendaire. Si on veut des versions logicielles plus récentes, il est bien sûr possible de passer en version testing. Voire unstable (aussi appelée Sid) si vous êtes carrément masochiste développeur.

Mais il est aussi possible de mélanger les versions, c’est à dire garder une version stable tout en allant piocher quelques paquets dans les versions testing ou unstable. Ce principe est le pinning.

 

Principe du pinning

On va ajouter au sources.list les dépôts Testing, unstable et experimental, tout en utilisant un fichier de préférences pour indiquer à Aptitude/Apt de n’utiliser ces dépôts que si l’utilisateur le demande explicitement (sans ce fichier, vous passeriez tout votre système en unstable…).

Modification du source.list

gedit /etc/apt/sources.list

Dedans, ajoutez les dépots Testing, Sid et Experimental :

############################
# Debian Squeeze (Testing) #
############################
 
deb http://ftp.fr.debian.org/debian/ testing main contrib non-free
 
############################
#  Debian Unstable (Sid)   #
############################
 
deb http://ftp.fr.debian.org/debian/ unstable main contrib non-free
 
############################
#   Debian Experimental    #
############################
 
deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free

 

Modification du fichier preference

gedit /etc/apt/preferences

Il se peut que le fichier soit initialement absent. Dans ce dernier, ajoutez :

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

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

  Package : *
  Pin :release o=Debian,a=testing,l=Debian-Security
  Pin-Priority : -10

  Package : *
  Pin : release o=Debian,a=unstable,l=Debian
  Pin-Priority : -10

  Package : *
  Pin : release o=Debian,a=experimental,l=Debian
  Pin-Priority : -10

Sachez qu’un pin-Priority de 900 signifie que le paquet ne sera installé qu’à défaut de version plus récente installée ou disponible dans la distribution cible, tandis que -10 aura pour conséquence que le paquet ne pourra être installé que manuellement. Globalement, les paquets seront téléchargés en priorité dans les dépôts qui ont un grand Pin-Priority.

Mettez à jour vos dépots

apt-get update

Et voilà ! Vous pouvez vérifier que les préférences ont bien été appliquées :

apt-cache policy

 Où est indiqué tous les Pin-Priority. Notez que les traductions sont toujours à la version la plus récente, c’est pourquoi vous verrez un Pin-Priority de 500 pour tous les dépôts Translation.

Voir les versions disponibles d’un paquet

Si vous souhaitez voir les différentes versions disponibles dans les dépôts, par exemple iceweasel :

apt-cache policy iceweasel

Vous noterez donc la différence entre les paquets « Installé » et « Candidat ».

 

Installer un paquet Testing

C’est quand même ce qu’on voulait faire au début, exemple toujours avec Iceweasel :

apt-get install iceweasel -t testing

 

Bonne installation !