APT : Ajouter des préférences de release sur certains packages

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search
Debian

Software version
Operating System Debian 6
Website
Last Update 29/12/2013
Others

1 Introduction

Vous êtes peut être tombé sur le cas où vous être en version stable de votre système, mais vous aimeriez bien utiliser un package plus à jour d'une version testing par exemple. C'est possible :-)

2 Configuration

2.1 source.list

J'ai choisis backuppc comme exemple. Admettons que je sois en version stable, et que je souhaiterais installer la version testing en permanence. Il faut que j'édite mon fichier /etc/apt/source.list afin qu'il contienne le nécessaire pour aller télécharger sur les repos stable et testing :

Configuration File /etc/apt/source.list
# Stable
deb http://ftp.fr.debian.org/debian/ stable main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ stable main non-free contrib
 
# Testing
deb http://ftp.fr.debian.org/debian/ testing main non-free contrib
deb-src http://ftp.fr.debian.org/debian/ testing main non-free contrib
 
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

Ensuite on met à jour :

Command apt-get
apt-get update

3 Preferences

Maintenant, nous allons créer un fichier /etc/apt/preferences et allons le renseigner de la sorte :

Configuration File /etc/apt/preferences
Package: *
Pin: release a=stable
Pin-priority: 900

Package: *
Pin: release a=testing
Pin-priority: 100

Je vais essayer de faire clair :

  • Pin : 'Package *' avec Pin doivent être présent pour indiquer chaque version de Debian que vous souhaitez utiliser (ici stable et testing)
  • Pin-priority : les priorités pour les versions de Debian vont de 1 à 1000. La valeur la plus haute prends le dessus sur les autres. Donc ici stable (900) est plus fort que testing (500).

Ca c'était pour l'indispensable. Maintenant pour rajouter backuppc, nous allons ajouter ces lignes :

Configuration File /etc/apt/preferences
Package: backuppc
Pin: release a=testing
Pin-priority: 1001

Encore une fois, une petite explication s'impose :

  • Package : nous indiquons le nom du package a updater dans une certaine version
  • Pin : Là j'indique que je souhaites passer en testing pour le package souhaité
  • Pin-priority : là ce doit être forcément un nombre au dessus de 1000 pour outrepasser les restrictions précédentes.

Et donc maintenant pour vérifier, si je fais un :

Command apt-get
apt-get install backuppc

J'ai la version de la testing qui m'est proposée, sans que le reste du système me soit proposé en testing :-). Voici quelques informations intéressantes :

Priorité d'épinglage Conséquence de l'épinglage apt sur le paquet
1001 installer le paquet même s'il s'agit d'un retour en arrière
990 utilisé par défaut pour l'archive version cible
500 utilisé par défaut pour l'archive normale
100 utilisé par défaut pour l'archive non automatique mais mises à niveau automatiques
100 utilisé pour le paquet installé
1 utilisé par défaut pour l'archive non automatique
-1 ne jamais installer le paquet même s'il est recommandé

3.1 Installer un paquet en particulier sans utiliser le fichier preferences

Il est possible d'installer un package en particulier sans configurer celui ci de manière explicite. Par exemple pour Nginx, voici comment récupérer la liste des packages disponible :

Command apt-cache
apt-cache policy nginx
nginx:
  Installé : (aucun)
  Candidat : 1.2.1-2.2+wheezy2
 Table de version :
     1.4.4-2 0
        100 http://ftp.fr.debian.org/debian/ unstable/main amd64 Packages
     1.2.1-2.2+wheezy2 0
        500 http://ftp.fr.debian.org/debian/ wheezy/main amd64 Packages

Je peux voir les versions unstable et wheezy. Si je souhaites installer la version unstable, je vais utiliser l'option '-t' :

Command
aptitude install -t unstable nginx

3.2 Bloquer la mise à jour d'un paquet particulier

Je ne me rappelle jamais de manière claire et simple comment bloquer la mise à jour d'un package debian. C'est pourtant assez simple si on suit la documentation!

En fait, je continue à utiliser et apprécier swiftfox mais j'ai un soucis avec la dernière version (la 2.0.0.9-1) qui ne fonctionne pas (problème pour charger libXcomposite.so.1). Je n'ai pas la patience de chercher et j'ai donc décider de rester à la version précédente que j'ai installée: la 2.0.0.6-1. Pour cela rien de plus simple, il suffit d'ajouter les lignes suivantes dans /etc/apt/preferences :

Configuration File /etc/apt/preferences
Package: swiftfox-athlon64
Pin: version 2.0.0.6-1
Pin-priority: 1001

La priorité de 1001 signifie que le paquet ne sera jamais mis à jour, ce que justement je souhaite! On peut vérifier que cela a bien été pris en compte de deux façons :

  • en tentant de mettre à jour (apt-get upgrade). On ne devrait pas voir de package swiftfox.
  • en utilisant apt-cache policy swiftfox-athlon64

Voici le retour de cette dernière commande:

Command apt-cache
 > apt-cache policy swiftfox-athlon64
 swiftfox-athlon64:
 Installé : 2.0.0.6-1
 Candidat : 2.0.0.6-1
 Étiquette de paquet : 2.0.0.6-1
 Table de version :
     2.0.0.9-1 1001
        500 http://getswiftfox.com unstable/non-free Packages
 *** 2.0.0.6-1 1001
        100 /var/lib/dpkg/status

4 FAQ

4.1 APT : apt-get error: "E: Dynamic MMap ran out of room"

Ce message peut apparaitre pendant un "apt-get update" lorsque apt ne dispose plus d'assez de place pour son cache.
pour corriger ce probleme il suffit de créer un fichier "/etc/apt/apt.conf" et d'y ajouter la ligne suivante :

Configuration File /etc/apt/apt.conf
APT::Cache-Limit "10000000"

un petit coup de

Command apt-get
apt-get update

et voila !

5 Ressources

http://www.debian.org/doc/manuals/debian-reference/ch02.fr.html