Projet

Général

Profil

Tâche #37631

Scénario #37606: [Hapy] Bug eole-debsums.sh : rapport de 40 Mo suite à une ligne d'erreur non filtrée

Étude

Ajouté par Benjamin Bohard il y a 15 jours. Mis à jour il y a environ 19 heures.

Statut:
Résolu
Priorité:
Normal
Assigné à:
Version cible:
Début:
08/09/2026
Echéance:
% réalisé:

100%

Restant à faire (heures):

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

Formats disponibles : Atom PDF