Apt-listbugs
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)