Tâche #37631
Scénario #37606: [Hapy] Bug eole-debsums.sh : rapport de 40 Mo suite à une ligne d'erreur non filtrée
Étude
100%
Historique
#1 Mis à jour par Benjamin Bohard il y a 15 jours
La commande qui produit une grand nombre de ligne est dpkg -S. Elle est utilisée à deux endroits : pour identifier le paquet de provenance des fichiers manquants (le cas rapporté dans la demande) et pour identifier le paquet de provenance des fichiers ignorés.
while read line
do
if echo "${line}" | grep -q '^debsums: missing file'
then
line=$(echo "${line}" | cut -d' ' -f4)
fi
# specific hack for subiquity (#34680)
[[ "${line}" == /usr/share/doc/* ]] && continue
[[ "${line}" == /usr/share/locale/* ]] && continue
dpkg -S ${line} | tee -a ${REPORT}
done < ${LOGFILE}
for ignored_list in ${LOGDIR}/*.ignored
do
TEMPFILE=$(mktemp -t eole-debsums-XXXXXX)
while read line
do
if echo "${line}" | grep -q '^debsums: missing file'
then
line=$(echo "${line}" | cut -d' ' -f4)
fi
dpkg -S ${line} >> "${TEMPFILE}"
done < ${ignored_list}
mv "${TEMPFILE}" "${ignored_list}"
done
Dans l’esprit, il me semble qu’il est question de lister les paquets uniquement pour les fichiers manquants. Partant de ce principe, la commande dpkg -S ne devrait s’appliquer que dans le cas où la ligne du fichier de log commence par "debsums: missing file".
Si ce raisonnement est bon, les commandes dpkg -S devraient être intégrées dans la condition if.
while read line
do
if echo "${line}" | grep -q '^debsums: missing file'
then
line=$(echo "${line}" | cut -d' ' -f4)
# specific hack for subiquity (#34680)
[[ "${line}" == /usr/share/doc/* ]] && continue
[[ "${line}" == /usr/share/locale/* ]] && continue
dpkg -S ${line} | tee -a ${REPORT}
fi
done < ${LOGFILE}
for ignored_list in ${LOGDIR}/*.ignored
do
TEMPFILE=$(mktemp -t eole-debsums-XXXXXX)
while read line
do
if echo "${line}" | grep -q '^debsums: missing file'
then
line=$(echo "${line}" | cut -d' ' -f4)
dpkg -S ${line} >> "${TEMPFILE}"
fi
done < ${ignored_list}
mv "${TEMPFILE}" "${ignored_list}"
done
#2 Mis à jour par Benjamin Bohard il y a 15 jours
Mauvaise piste : on veut récupérer les paquets de tous les fichiers posant problème, que ce soit parce qu’ils sont modifiés pour parce qu’ils sont absents.
Le problème qu’il faut régler est donc de s’assurer que debsum a bien pu construire ses listes avant d’aller plus loin. Ce n’est pas le cas lorsqu’il sort prématurément en erreur.
#3 Mis à jour par Benjamin Bohard il y a 15 jours
L’information du paquet d’origine pour les fichiers manquants est maintenant donnée par la commande debsums -c elle-même. Une entrée pour un paquet manquant prend la forme :
debsums: missing file /usr/share/eole/schedule/scripts/quota (from eole-fichier-quota package)
Avec l’option -s plutôt que -c, on a un retour avec un format cohérent quelque soit l’état du fichier :
debsums: changed file /usr/share/eole/debsums/eole-debsums.sh (from eole-debsums package) debsums: changed file /usr/lib/python3/dist-packages/zephir/monitor/agents/__pycache__/debsums.cpython-312.pyc (from eole-debsums-zephir-agent package) debsums: changed file /usr/lib/python3/dist-packages/zephir/monitor/agents/debsums.py (from eole-debsums-zephir-agent package) debsums: changed file /usr/lib/envole-tools/composer (from eole-envole-tools package) debsums: missing file /usr/share/eole/schedule/scripts/quota (from eole-fichier-quota package) debsums: changed file /usr/share/lxc/config/common.conf (from liblxc-common package) debsums: changed file /usr/bin/hsqldb (from lsc package) debsums: changed file /usr/bin/lsc (from lsc package) debsums: changed file /usr/bin/lsc-agent (from lsc package)
On a à la fois le type de problème (changed, missing) le chemin et le paquet d’origine.
#4 Mis à jour par Benjamin Bohard il y a 13 jours
- Statut changé de En cours à À valider
#5 Mis à jour par Laurent Gourvenec il y a environ 19 heures
- Statut changé de À valider à Résolu
- % réalisé changé de 0 à 100