Apt-listbugs

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

Cet article est une ébauche. N'hésitez pas à contribuer ou à en discuter.

Apt-listbugs

Ce paquet disponible dans les dépôts permet de se prémunir, pour ceux qui sont en testing ou instable, de l'installation d'un paquet "bugué". Il est très simple d'installation et d'utilisation !

Installation

# aptitude install apt-listbugs
Lecture des listes de paquets... Fait         
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait       
Lecture de l'information d'état étendu... Fait
Initialisation de l'état des paquets... Fait   
Les NOUVEAUX paquets suivants vont être installés : 
  apt-listbugs irb1.8{a} libdpkg-ruby1.8{a} libgettext-ruby1.8{a} libhttp-access2-ruby1.8{a} libhttpclient-ruby1.8{a} liblocale-ruby1.8{a} 
  libopenssl-ruby1.8{a} libreadline-ruby1.8{a} libruby{a} libuconv-ruby1.8{a} libxml-parser-ruby1.8{a} ruby{a}                             
0 paquets mis à jour, 13 nouvellement installés, 0 à enlever et 12 non mis à jour.                                                         
Il est nécessaire de télécharger 0o/1 752ko d'archives. Après dépaquetage, 6 860ko seront utilisés.                                        
Voulez-vous continuer ? [Y/n/?] y ...

Utilisation

Apt-listbugs se lance automatiquement à l'installation d'un nouveau paquet, et va chercher les rapports de bug (s'ils existent). En cas de bug, il vous prévient et vous demande si vous souhaitez installer, annuler ou figer le paquet en question par ajout d'une "préférence pin".

Exemple :

# aptitude install grub-pc
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu... Fait
Initialisation de l'état des paquets... Fait
Les paquets suivants seront mis à jour :
  grub-common grub-pc
2 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 12 non mis à jour.
Il est nécessaire de télécharger 0o/2 397ko d'archives. Après dépaquetage, 123ko seront utilisés.
Voulez-vous continuer ? [Y/n/?] y
ATTENTION : des versions non certifiées des paquets suivants vont
être installées.

Des paquets non certifiés peuvent compromettre la sécurité de votre
système. Vous ne devriez les installer que si vous êtes certain
que c'est bien votre intention.

  grub-pc grub-common

Voulez-vous ignorer cet avertissement et continuer quand même ?
Pour continuer, entrer « Oui ». Pour interrompre l'installation, entrer « Non » : oui
Écriture de l'information d'état étendu... Fait
Lecture des champs des paquets... Fait
Lecture de l'état des paquets... Fait


A ce moment apt-listbugs prend la main, recherche les éventuels bugs, et s'il en trouve, vous demande ce qu'il doit faire :

Récupération des rapports de bogue... Fait
Analyse des informations Trouvé/Corrigé... Fait
Bogues de gravité critical sur grub-pc (1.98~20100115-1 -> 1.98~20100128-1.2) <non corrigé>
 #568001 - grub-pc: grub locks up the machine
Résumé :
 grub-pc(1 bogue)
Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

Demandons la liste des options possibles en tapant "?"

Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  ?
     y     - continuer l'installation avec APT, mais sans ignorer les bogues.
     a     - continuer l'installation avec APT en ignorant les bogues ci-dessus.
     n     - interrompre l'installation avec APT
   <num>   - demander le rapport de bogue spécifié (nécessite reportbug)
  #<num>   - identique à <num>
     r     - afficher les listes de bogues
 p <pqt..> - figer les paquets : APT doit être relancé pour activer
             cette option
 p         - figer tous les paquets ci-dessus. APT devra être relancé.
 i <numéro>- ignorer le bogue numéro <numéro>
     ?     - afficher cette aide
     w     - afficher les listes de bogues en HTML (cette option
             utilise sensible-browser)
Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]

L'option qui nous intéresse : p > vous figez le paquet par ajout d'une "préférence pin" dans le fichier /etc/apt/preferences

Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [Y/n/?/...]  p
Le 1 paquet suivant sera figé ou mis en attente :
 grub-pc
Êtes-vous certain ?[Y/n]? y
grub-pc figé par ajout d'une préférence « Pin » dans /etc/apt/preferences. APT
doit être relancé pour activer cette option

A ce niveau, il faut sortir de l'installation et relancer aptitude pour que notre choix soit pris en compte :

Êtes-vous certain de vouloir installer/mettre à jour les paquets ci-dessus ? [N/?/...]  n
*******************************************************************
****** Sortie en erreur forcée pour stopper l'installation. ******
*******************************************************************
E: Le sous-processus /usr/sbin/apt-listbugs apt || exit 10 a renvoyé un code d'erreur (10)
E: Failure running script /usr/sbin/apt-listbugs apt || exit 10
Échec de l'installation d'un paquet. Tentative de réparation :
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu... Fait
Initialisation de l'état des paquets... Fait

Nous vérifions l'état du fichier /etc/apt/preferences :

$ cat /etc/apt/preferences
Explanation: Pinned by apt-listbugs at Wed Mar 03 09:37:07 +0300 2010
Explanation:   #568001: grub-pc: grub locks up the machine
Package: grub-pc
Pin: version 1.98~20100115-1
Pin-Priority: 1000

Effectivement notre fichier "bugué" est bien "pinned". Cela signifie que cette version ne sera jamais installée,tant qu'un nouveau paquet ne sera pas dans les dépôts. Une nouvelle mise à jour confirme cette action :

# aptitude install grub-pc
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu... Fait
Initialisation de l'état des paquets... Fait
Aucun paquet ne va être installé, mis à jour ou enlevé.
0 paquets mis à jour, 0 nouvellement installés, 0 à enlever et 13 non mis à jour.
Il est nécessaire de télécharger 0o d'archives. Après dépaquetage, 0o seront utilisés.
Écriture de l'information d'état étendu... Fait
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Lecture de l'information d'état étendu... Fait
Initialisation de l'état des paquets... Fait

Il semble que ce soit surtout un bogue Nvidia ... cf Bumblebee issue 445


Le fichier marqué par apt-listbugs n'est pas mis en "hold". Cela signifie qu'il sera mis à jour à la prochaine version supérieure dans les dépôts. C'est un script cron de apt-listbugs qui, une fois que le bug critique est corrigé, redonne sa "chance" au paquet marqué.


Ce n'est pas le cas avec la mise en "hold" qui fige définitivement (tant que vous n'aurez pas mis ce paquet en "unhold") la mise à jour.

Obtenir la liste des bugs sur un paquet précis

apt-listbugs list nom_du_paquet
# apt-listbugs list apt
Récupération des rapports de bogue… Fait
Analyse des informations Trouvé/Corrigé… Fait
bogues de gravité serious sur apt (→ ) <En attente de traitement>
 b1 - #815650 - apt: fails to upgrade squid3 from jessie to stretch
Résumé :
 apt(1 bogue)

Obtenir la liste de tout les bugs des paquets installer sur le système

$ apt-listbugs list $(dpkg --get-selections | grep install | awk '{print $1}')

Maintenance et Tâche CRON

Une tâche cron quotidienne vérifie si les paquets sont toujours marqués comme "bogués"

# cat /etc/cron.daily/apt-listbugs

#!/bin/sh -e
...
prefclean()
{
    file="/etc/apt/preferences.d/apt-listbugs"
    backup="/var/backups/apt-listbugs.preferences"

    test -x /usr/lib/ruby/vendor_ruby/aptlistbugs/aptcleanup || return 0
    test -x /usr/bin/apt-listbugs || return 0
    test -f "$file" || return 0

    tmp=$(mktemp --tmpdir apt-listbugs_tmp_preferences.XXXXXX)

    /usr/lib/ruby/vendor_ruby/aptlistbugs/aptcleanup > "$tmp" || return 0
    if ! diff -B "$tmp" "$file" > /dev/null
    then
        if test -f "$backup"
        then
            savelog -q "$backup"
        fi
        cp -aH "$file" "$backup"
        cp "$tmp" "$file"
    fi
    /bin/rm -f "$tmp"
}

prefclean

Si oui apt-listbugs ne bouge pas une oreille, sinon il enlève le paquet de preferences.

Lol 3 mars 2010 à 06:47 (UTC)

Mise à jour: Lol (discussion) 3 mai 2016 à 22:31 (CEST)