logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


EN TRAVAUX

Je vous préviens de suite, c'est le bordel.

Les fichiers apt_preferences

  • Commentaires : Attention, ce tuto, c'est le manuel de l'apprenti mauvais-administrateur-système, à utiliser avec modération…

Introduction

Lorsque l'on dispose de plusieurs versions installables dans les dépôts renseignés dans les fichiers sources.list, il faut définir des priorités pour que APT sache quelle version installer.

Par exemple, si l'on a les dépôts Debian de testing et unstable et que l'on veut rester autant que possible en testing, il faut indiquer à APT que testing a une priorité supérieure à sid. Inversement, si pour un paquet donné on veut utiliser sa version présente dans sid, il faut le spécifier également. La définition de ces priorités s'appelle le pinning.

C'est à cela que servent les fichiers preferences.

Les cas d'utilisation raisonnable sont les suivants :

  1. Vous voulez être en testing avec les dépôts sid sous la main au cas où
  2. Vous voulez être en testing ou sid mais récupérer la version sid ou experimental d'un paquet en particulier
  3. Vous utilisez le dépôt multimedia, mais ne voulez pas donner une forte priorité à tous les paquets qu'il propose

En dehors de ça, si vous voulez mélanger stable et une testing/unstable/experimental, alors vous devriez prendre rendez-vous d'urgence chez votre garagiste pour qu'il s'occupe de votre carie.

Les priorités

Les fichiers preferences permettent de fixer la priorité des paquets suivant leurs dépôt. Voici la signification d'une priorité P.

  • P > 1000

Le paquet sera installé même si APT est forcé d'installer une version plus ancienne1) que la version actuelle. Cette opération n'est pas sans risque.

  • 990 < P ≤ 1000

Le paquet sera installé sauf si une version plus récente est déjà installée.

  • 500 < P ≤ 990

Le paquet ne sera installé qu'à défaut de version plus récente installée ou disponible dans la distribution cible.

  • 100 < P ≤ 500

Le paquet ne sera installé que s'il n'en existe aucune version plus récente, installée ou disponible dans une autre branche.

  • 0 < P ≤ 100

Le paquet ne sera installé que si aucune autre version du paquet n'est installée.

  • P < 0

Le paquet ne sera jamais installé.

Configuration initiale

Par défaut, la priorité de tous les dépôts est de 500, à l'exception du dépôt backports, de priorité 100, et du dépôt experimental de priorité 1.

Lors d'une installation, les dépôts correspondant à la branche courante prennent une priorité 990. Lors d'une installation avec l'option « -t votrebranche », les dépôts correspondant à la branche « votrebranche » prennent une priorité 990.

On peut vérifier les priorités en utilisant la ligne de commande :

apt-cache policy

Précautions

En faisant joujou avec les fichiers preferences, on peut très rapidement faire quelque chose qu'on ne voulait pas, et qui nous oblige à réinstaller le système. Pour éviter cela, il existe une série de tests que vous pouvez faire pour tester votre configuration, et de précautions à prendre.

Vérifier la configuration

Après avoir créé ou modifié votre fichier preferences, la première chose à faire est dans un terminal en root :

aptitude update

Vous pourrez ensuite vérifier que vos modifications ont bien été prises en compte avec la commande

apt-cache policy

Cette dernière commande vous permettra de vérifier si les priorités de votre fichier preferences sont bien prises en compte par apt-get et correspondent à votre choix.

Dans le cas contraire, vous risquez d'avoir une mauvaise surprise après avoir utilisé les commandes de mises à jour : apt-get upgrade ou apt-get dist-upgrade…

Les exemples d'utilisation

Rester en Stable

Ce fichier donne une priorité de 900 à tous les paquets de la release stable et une priorité de -10 aux autres (donc ils ne sont pas installés).

Il est parfaitement inutile si vous n'avez que les dépôts stable dans votre sources.list.

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

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

Package: *
Pin: release a=proposed-updates
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

Stable avec suivi d'un paquet dans les Backports

Rajouter au fichier :

Package: iceweasel
Pin: release a=stable-backports
Pin-Priority: 900

Stable avec dépôt multimédia à faible priorité

Rajouter au fichier :

Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable
Pin-Priority: 400

Testing avec Sid non-prioritaire

On suppose que vous avez comme sources quelque chose comme ça :

deb http://ftp.fr.debian.org/debian testing main contrib non-free
deb http://ftp.fr.debian.org/debian sid main contrib non-free

mais que vous voulez rester en testing autant que possible.

Même principe que « Stable avec dépôt multimédia à faible priorité ».

Sid avec suivi d'un paquet dans Experimental

Même principe que « Stable avec suivi d'un paquet dans les backports ».

La priorité du dépôt deb-multimedia pour experimental est à 500 par défaut. Si vous avez ce dépôt dans votre fichier sources.list, faite donc attention à votre fichier preferences si vous ne désirez pas que tous les paquets issus de deb-multimedia passent en experimental.

===== Fichier Preferences pour être en TESTING avec le Pinning sur Stable et Unstable

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

Package: *
Pin:release o=Debian,a=testing,l=Debian-Security
Pin-Priority: 900
 
Package: * 
Pin: release o=Unofficial Multimedia Packages,a=testing,l=Unofficial

Multimedia Packages

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

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

Package: *
Pin: release o=Debian,a=stable-updates,l=Debian
Pin-Priority: 900
  
Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable,l=Unofficial Multimedia

Packages

Pin-Priority: 900

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

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable,l=Unofficial

Multimedia Packages

Pin-Priority: 100
 
Ce fichier preferences permet de bénéficier des mises à jours de sécurité et wheezy-updates anciennement “volatiles” de Stable pour les paquets communs aux deux branches
Note :

En testing et plus, vous pouvez désactiver les dépôts stable-backports car ils sont aussi dans la branche testing !

===== Fichier preferences pour être en UNSTABLE (ou : SID) avec le Pinning sur : Testing, Stable et Experimental

Option #1 :

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial

Multimedia Packages

Pin-Priority: 1

Ce fichier preferences, bien que minimaliste, est tout à fait suffisant et peut donc être utilisé sans aucun problème.
C'est d'ailleurs celui que j'utilise personnellement.

Option #2 :

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

Package: *
Pin: release o=Unofficial Multimedia Packages,a=unstable,l=Unofficial

Multimedia Packages

Pin-Priority: 900

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

Package: *
Pin: release o=Debian,a=testing,l=Debian-Security
Pin-Priority: 800
 
Package: *
Pin: release o=Unofficial Multimedia Packages,a=testing,l=Unofficial

Multimedia Packages

Pin-Priority: 800

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

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

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

Package: *
Pin: release o=Unofficial Multimedia Packages,a=stable,l=Unofficial Multimedia

Packages

Pin-Priority: 700

Package: *
Pin: release o=Unofficial Multimedia Packages,a=experimental,l=Unofficial

Multimedia Packages

Pin-Priority: 1

Remarque :

Ce second fichier preferences pour Sid est pour les gens tatillons qui veulent contrôler parfaitement l'utilisation qu'ils font des dépôts/branches.

Ce fichier est aussi valable que le premier.

Un seul bémol dedans par contre.

Le fait d'avoir des priorités qui ne sont pas égales pour toutes les différentes branches Debian a pour inconvénient :

  • que les mises à jours de sécurité et wheezy-updates pour les paquets communs
  • aux branches Unstable et Stable sont moins réactives, qu'elles prennent plus
  • de temps à arriver.
  À vous de décider le système que vous préférez dans votre PC !

Ça c'est toujours Debian ça !

Conseils

Nommer les branches par leur nom **commun** ou leur nom **release**

  deb http://ftp.fr.debian.org/debian/ wheezy main contrib non-free

apt-cache policy donne une option (n=wheezy)

  900 http://ftp.fr.debian.org/debian/ wheezy/main Packages
       release v=6.0.2.1,o=Debian,a=stable,n=wheezy,l=Debian,c=main
       origin ftp.fr.debian.org

donc on peut rajouter dans le fichier preferences ce style d'interprétation :

  Package: *
  Pin: release a=stable
  Pin-priority: 900
  Package: *
  Pin: release n=wheezy
  Pin-priority: 900

Garder des priorités identiques pour les dépôts d'une même branche

C'est le comportement par défaut quand on n'a que les dépôts de la branche suivie, sans fichier Preferences.

Tout manquement à cette règle casse la comportement par défaut et peut générer des résultats très dommageables car non prévus par les développeurs Debian.

(Excepté les dépôts backports)

Attribuer une priorité comprise entre 500 et 989

pour la branche suivie et la/les branche(s) comportant des paquets aux versions égales ou inférieures à la branche suivie.

Pourquoi une valeur plus petite que 990 ? Parce que lorsque l'on utilise l'option -t ainsi :

aptitude install -t <branche> <le_nom_du_paquet>

pour installer des paquets d'une branche autre que celle suivie, celle-ci devient la branche par défaut (APT::Default-Release “branche”) avec une priorité temporaire de 990.
Donc, pour la branche prioritaire du fichier preferences

 avoir une priorité égale ou supérieure à 990 perturbe l'option "-t"

D'un point de vue pratique,

(en débat pour le pratique ???)

Il est préférable d'utiliser des chiffres ronds, comme 900, 800, 90. Par exemple, si l'on a une priorité 620 et une priorité 630, il sera facile d'intercaler une priorité 625.

L'installation d'un paquet d'une branche supérieure peut nécessiter :
  1. la mise à jour de lib récentes incompatibles avec d'autres paquets plus

anciens,

  1. qui devront également être upgradés (mis à jour…) à leur tour !

Bref, installer ou mettre à jour un paquet d'une branche supérieure peut n'être possible qu'en migrant vers la branche supérieure.

libc6

Si vous êtes sous stable et que vous voulez installer un paquet de la branche testing, ou même unstable, qui impliquerait des mises à jour aussi importantes que libc6, alors abandonnez, le pinning ne sera pas une solution pour vous, puisqu'il romprait la stabilité du système et effectuerait une mise à jour partielle vers testing, ce qui est la pire des situations possibles.

À consulter :

La documentation de référence sur ce fichier de configuration est disponible dans la page de manuel apt_preferences, accessible par la commande :

$ man apt_preferences

/dev/random - ou presque

Illustration de l'option -t

Supposons que je veuille installer le paquet XYZ qui se trouve dans une autre branche du sources.list que celle utilisée en priorité.

Si j'utilise le slash “/” ainsi :

# aptitude install XYZ/<branche>

ou

# apt-get install XYZ/<branche>

Cela installe le paquet XYZ de la branche donnée en argument.

Si je fais maintenant un :

# aptitude install XYZ -t <branche>

ou

# apt-get install XYZ -t <branche>

Cela installe le paquet XYZ tout en définissant temporairement la branche donnée en argument comme branche par défaut (priorité de 990).

Concrètement :

  • avec l'option -t,

les éventuelles dépendances du paquet XYZ seront facilement accessibles car elles auront, comme XYZ, une priorité temporaire de 990.

  • Alors qu'avec /,

elles gardent la priorité définie dans le fichier /etc/apt/preferences ou celle par défaut (500).

Après cette commande, nous sommes toujours dans la branche mentionnée par l'option -t !
Il nous faut :

 fermer le terminal root pour revenir dans la branche prioritaire du fichier

preferences.

Suivi des mises à jour / option -t

Si nous voulons suivre une application installée avec l'option -t (et les dépendances qui vont avec…)\\, nous devons écrire une entrée dans le fichier preferences (voir exemple ci-dessous).

Par exemple :

Pour un paquet XYZ de la branche unstable nous ajouterions au fichier preferences ces lignes :

 Package: XYZ
 Pin: release a=unstable
 Pin-Priority: 400

Nota :

Par contre, même de priorité inférieure, l'installation d'une version d'un paquet n'est pas rétrogradée par les mises à jour.

Merci au captnfab pour cette précision. :-)

Pourquoi utiliser le dépôt experimental

Le dépôt experimental constitue un cas à part.

On n'y retrouve pas tous les paquets disponibles dans les branches stable, testing et unstable.

La plupart des nouveaux paquets ne passent pas par les dépôts experimental et vont directement dans unstable.

On ne peut donc pas parler de la branche experimental.

Ce dépôt contient les versions les plus récentes des paquets s'y trouvant.
Il est normalement réservé aux développeurs Debian
1)
On appelle cela le downgrade par opposition à l'upgrade.
doc/systeme/apt/pinning.1369349337.txt.gz · Dernière modification: 24/05/2013 00:48 par captnfab

Pied de page des forums

Propulsé par FluxBB