Forum Linux.debian/ubuntu Apt pinning récalcitrant

Posté par .
Tags : aucun
1
3
oct.
2009
Bonjour,

Je fais mes premiers pas avec le pinning et je suis déconcerté par un problème tout simple: apt-cache policy ne reflète pas la configuration dans /etc/apt/preferences. Ou en tout cas pas comme je m'y attendrais.

cat /etc/apt/preferences

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

Package: *
Pin: origin www.debian-multimedia.org, release a=testing
Pin-Priority: 850

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

Package: vlc, vlc-nox, libass4, libfaad2, libvlccore2, vlc-data, libvlc2
Pin: release a=unstable
Pin-Priority: 990


apt-cache policy vlc

vlc:
Installed: 1.0.2-1
Candidate: 1.0.2-1
Version table:
*** 1.0.2-1 0
-10 http://ftp2.fr.debian.org unstable/main Packages
100 /var/lib/dpkg/status
1.0.1-1+b1 0
990 http://ftp2.fr.debian.org testing/main Packages


Ce qui m'intrigue, c'est que la version unstable ait un score de -10, je m'attendais à 990 et que la version testing ait un score de 990, je m'attendais à 900. Autre source de grand questionnement à quoi correspond le score de 100 pour /var/lib/dpkg/status. (peut-être 990 - (900 -10) ?)

Qu'en pensez-vous? Merci de votre aide.
  • # man

    Posté par (page perso) . Évalué à 2.

    man apt_preferences

    extrait:

    une priorité égale à 100
    est affectée à la version déjà installée (si elle existe).

    une priorité égale à 500
    est affectée aux versions qui ne sont pas installées et qui
    nappartiennent pas à la distribution par défaut.

    une priorité égale à 990
    est affectée aux versions qui ne sont pas installées et qui
    appartiennent à la distribution par défaut.

    Quand aucune distribution par défaut na été indiquée, APT affecte
    simplement une priorité égale à 100 à toute version installée dun
    paquet et une priorité égale à 500 à tout version non installée.

    Puis APT applique les règles suivantes pour déterminer la version du
    paquet quil faut installer (elles sont listées par ordre de
    priorité) :

    · Ne jamais revenir en arrière, sauf si la priorité dune version
    disponible dépasse 1000. « Revenir en arrière » signifie installer
    une version moins récente que la version installée. Il faut noter
    qu'aucune des priorités par défaut n'excède 1000 ; de telles
    valeurs ne peuvent être définies que dans le fichier des
    préférences. Notez aussi quil est risqué de revenir en arrière.

    · Installer la version qui possède la priorité la plus haute.

    Quand deux (ou plus) versions ont la même priorité, installer la
    version la plus récente (c.-à-d. celle · dont le numéro de version
    est le plus grand).

    Quand deux (ou plus) versions ont la même priorité et le même
    numéro de version, mais soit les paquets diffèrent par certaines
    métadonnées, soit loption --reinstall a été donnée, installer la
    version qui nest pas installée.

    En général, la version installée dun paquet (priorité 100) nest pas
    aussi récente que les versions disponibles dans les sources listées
    dans le fichier sources.list(5)(priorité 500 ou 990). Et donc le paquet
    sera mis à niveau avec la commande : apt-get install paquet ou apt-get
    dist-upgrade.

    La version installée dun paquet peut être - rarement - plus récente
    que tout autre version disponible. Les commandes apt-get install paquet
    ou apt-get upgrade ne provoquent pas de retour en arrière.

    Système - Réseau - Sécurité Open Source

    • [^] # Re: man

      Posté par . Évalué à 3.

      Ca explique le 100 mais pas le reste. S'il y a des priorité définies dans le fichier de config, elles surchargent les priorités par défaut.
      Pour le vlc de testing, les règles applicables sont :
      testing -> 900
      Debian -> -10.
      Or, là c'est 990 qui est appliqué.

      Pour la version unstable :
      Debian -> -10
      vlc unstable -> 900.
      C'est -10 qui est appliqué.

      La doc ne précise pas clairement ce qui se passe si plusieurs règles correspondent. Voyant de 2e cas, on peut supposer que c'est le première qui match qui l'emporte mais ça n'explique pas le 990 du vlc de testing. La première règle devrait surcharger la priorité par défaut. J'ai peut être un bout d'explication. Si dans la liste des sources tu as mis squeeze pour la version testing, une règle sur testing dans les préférences ne matchera pas. J'ai déjà eu le cas.

      J'ai déjà eu des surprises avec le système de préférences. Il y a plusieurs bugs à ce sujet rentrés. La réponse donnée est que le comportement réellement implémenté n'est exactement celui de la doc. Entre autres, "version", "release" et "origin" ne s'appliquent pas pareil. Il y a quelques précisions ici [1].

      [1] http://www.xs4all.nl/~carlo17/howto/debian.html#errata
      • [^] # Re: man

        Posté par . Évalué à 2.

        Si dans la liste des sources tu as mis squeeze pour la version testing, une règle sur testing dans les préférences ne matchera pas. J'ai déjà eu le cas.
        Très Intéressant à savoir, mais c'est à exclure dans mon cas, je n'ai utilisé que les noms du type testing et unstable. (voir mon sources.list sur http://pastebin.com/m59b7cf2e)

        En fait j'ai fait une erreur très bête.

        Sur la ligne Package, les noms de paquets doivent être séparés par des espaces et pas par des virgules (ce qui est homogène avec le fonctionnement de apt-get finalement)

        c'est-à-dire

        Package: vlc vlc-nox libass4 libfaad2 libvlccore2 vlc-data libvlc2
        Pin: release a=unstable
        Pin-Priority: 990


        Pour autant je n'arrive toujours à donner un sens aux indications que me fourni apt-cache policy.

        Bon je suis en train de me farcir
        man apt_preferences
        /usr/share/doc/apt-doc
        http://www.xs4all.nl/~carlo17/howto/debian.html (le tuto indiqué au post précédent)

        J'espère comprendre un peu mieux.
    • [^] # Re: man

      Posté par . Évalué à 2.

      Merci à tous les deux pour votre aide!
      a+

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.