Journaux de portage

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Portage log and the translation is 100% complete.

Les journaux de Portage procurent des informations lorsque sont installés, mis à jour ou supprimés des paquets.

Lorsque emerge est en train de construire un paquet, il n'est pas rare de voir des messages provenant de Portage en personne. Au vu de l'importance des informations qui peuvent être contenu dans ceux-ci de la part des développeurs de Gentoo c'est une bonne idée de les lire, mais parfois cela n'est pas immédiatement possible car ils défilent trop rapidement à l'écran. Cela peut être facilement résolu en activant une fonctionnalité de Portage nommé elog, dont l'objectif est de sauvegarder sur le disque les messages pour une consultation ultérieure. Cependant d'autres méthodes de journalisation existent…

Sous-système d'elog pour Portage

Le sous-système d'elog pour Portage surveille les retours procurés par les messages des ebuilds que les développeurs ont ajoutés dans ceux-ci pour attirer l'intention des administrateurs (NdT: du système) ou de l'utilisateur root.

Paramètres

Sélectionner quel genre d'informations sont journalisés à travers la variable PORTAGE_ELOG_CLASSES. Les valeurs possibles sont info (NdT: informations), warn (NdT: warning, c-à-d avertissement), error, log (NdT: journaux), ainsi que qa (NdT: q pour quiet (silencieux, c-à-d moins verbeux) & a pour alphabétique) :

PORTAGE_ELOG_CLASSES="log warn error"

Configuration pour un stockage par fichier

Portage peut s'occuper des événements elog de différentes façons.

Afin de sauvegarder les événements elog sur le disque, il faut activer le module save dans la variable PORTAGE_ELOG_SYSTEM :

FILE /etc/portage/make.conf
# Avertissement: utiliser 'save' ne vas pas afficher les messages durant l'installation. Ajouter 'echo' à 'save' *ET* 'show'.
#PORTAGE_ELOG_SYSTEM="save"

# Affiche les messages après l'installation *et* save
PORTAGE_ELOG_SYSTEM="echo save"

Les messages seront sauvegardés dans /var/log/portage/elog ou dans ${PORTAGE_LOGDIR}/elog si la dites variable est paramétré.

Afin de pouvoir créer par catégorie des fichiers elogs, activer la fonctionnalités split-elog de Portage. Cela forcera Portage à créer des sous-répertoires par catégorie dans l'emplacement /var/log/portage/elog.

En sus, pour créer un journal par catégorie, activer la fonctionnalité de Portage split-log. Cela forcera Portage à créer des sous-répertoires classés par catégorie dans l'emplacement /var/log/portage/build.

Script pour consulter les journaux

Lorsque les journaux sont séparés, il peut être un peu ennuyant de les consulter un par un. Voici un exemple de script qui les imprimes en utilisant la date :

FILE print-elog-messages.sh
#!/bin/bash

# Ce script part du principe que portage est configuré pour enregistrer les journaux dans /var/log/portage/elog et qu'il fonctionne avec une configuration séparé (NdT: par catégorie) des journaux.
#
# Si une date spécifique est souhaitée, lancer le script comme ceci:
# GET_DATES="20230101 20230102" ./print_elog_messages.sh
#
# S'il faut imprimer tout les fichiers, lancer le script comme ceci:
# GET_ALL="true" ./print_elog_messages.sh
#
# Si le nom du fichier script est différent, l'ajuster en conséquence !

# Vérifie que le lancement est fait en tant que root et l'arrête si c'est le cas
current_user=$(whoami)
[ -z "$current_user" ] && echo "whoami returns an empty string" && exit 1
[ "$current_user" == "root" ] && echo "Don't run as root, there's no need!" && exit 1

# Définit la fréquence de vérifications. Ces chaînes (NdT: de caractères) sont interprétés par l'outil "date".
declare -a days=("today" "yesterday")

# Modifie le tableau vers la date personnalisée si déclarée.
[ -n "$GET_DATES" ] && declare -a days=("$GET_DATES")

# Si tout doit être imprimé, il n'y a pas de raisons de parcourir de 
# multiples fois et cela ne ferait pas sens de modifier la 
# fréquence à "all".
[ "$GET_ALL" == "true" ] && declare -a days=("all")

# Parcourir les fréquences paramétrés dans le tableau "days" et ses formats pour trouver
# le nom des fichiers contenant YYYYmmdd, par exemple 20221215, car le format
# fait partie des noms de fichier par défaut. Ensuite, lancer la commande cat avec le nom des fichiers trouver en tant qu'argument, ce qui ajoute le contenu du fichier dans la sortie du terminal. Enlever l'argument -n de cat si on ne veut pas imprimer les numéros de lignes.

for val in ${days[@]}; do
	echo "          ===== $val ====="
	find /var/log/portage/elog -name \
		"*$([ "$GET_ALL" == "true" ] || date --date=$val +%Y%m%d)*" \
		-type f -print -exec cat -n '{}' \;
done

Configuration pour l'e-mail

Pour envoyer par e-mail des journaux à un destinataire, activer le module mail. L'option mail requiert quelques variables additionnel qui doivent être paramétrés. Lire /usr/share/portage/config/make.conf.example pour de plus amples informations.

Ci-dessous, un exemple de paramétrages très explicite :

FILE /etc/portage/make.conf
# Cela enverra _seulement_ un e-mail; il peut être souhaité d'utiliser "mail save" ou tout autre chose de similaire à la place.
PORTAGE_ELOG_SYSTEM="mail"
# En premier l'adresse de destination, puis le serveur SMTP.
PORTAGE_ELOG_MAILURI="reception-journaux@exemple.com email.exemple.com"
PORTAGE_ELOG_MAILFROM="portage@$(hostname).exemple.com"
PORTAGE_ELOG_MAILSUBJECT="\${PACKAGE} is \${ACTION} on \${HOST}"

Un autre exemple avec nullmailer ou sendmail :

FILE /etc/portage/make.conf
# Cela enverra _seulement_ un e-mail; il peut être souhaité d'utiliser "mail save" ou autre chose de similaire à la place.
PORTAGE_ELOG_SYSTEM="mail"
# En premier l’adresse du destinataire, puis le serveur SMTP.
PORTAGE_ELOG_MAILURI="utilisateur@hote /usr/sbin/sendmail"
PORTAGE_ELOG_MAILFROM="portage@$(hostname).exemple.com"
PORTAGE_ELOG_MAILSUBJECT="\${PACKAGE} is \${ACTION} on \${HOST}"

Logiciels associés

Ce qui suit est une liste des logiciels associés aux elogs :

Journaux de compilations (NdT: build)

Les journaux de compilations peuvent être sauvegardés sur le disque ou envoyer par e-mail à un destinataire, en paramétrant les variables dans make.conf. Cela autorise l'administrateur système à consulter les compilations plus tard.

Par défaut, quand emerge est lancé, Portage sauvegarde automatiquement et temporairement les journaux de compilations dans /var/tmp/portage/<catégorie>/<nomdupaquet-version>/temp/build.log. Le dossier (NdT: des journaux) de compilation sera supprimé quand emerge aura terminé avec succès, de ce fait les (NdT: journaux de) compilations réussis seront perdus. Cependant si cela échoue, les journaux seront conservés, de ce fait le build.log sera toujours disponibles pour l'attacher à une demande de support.

À noter que build.log peut être suivit d'une extension (NdT: de fichier) supplémentaire si compress-build-logs est paramétré dans la variable FEATURES. Le répertoire par défaut dans la variable PORTAGE_TMPDIR est /var/tmp, ajuster ce chemin en accord avec ce qui a été paramétré si cela a été modifié dans make.conf.

Toujours conserver les journaux de compilations (NdT: build)

Pour activer la sauvegarde des journaux de compilations, éditer le fichier /etc/portage/make.conf et paramétrer la variable PORTAGE_LOGDIR vers une destination où les journaux seront conservés :

FILE /etc/portage/make.conf
PORTAGE_LOGDIR="/var/log/portage"

Il est d'usage de sélectionner /var/log/portage en tant qu'emplacement des journaux, car c'est ici que le sous-système du répertoire d'elog se trouverai si la variable PORTAGE_LOGDIR était au préalable vide ou non-paramétré.

Un nombre de paramètres pour FEATURES peuvent être ajoutés dans /etc/portage/make.conf et peuvent influencer comment Portage gère les journaux :

  • Avec binpkg-logs paramétré, même les déploiements de paquets binaires seront conservés dans les journaux.
  • Quand clean-logs est paramétré, les opérations usuelles de nettoyage des journaux sont exécutés. La commande qui est exécuté est définit par la variable PORTAGE_LOGDIR_CLEAN et conserve par défauts les fichiers durant 7 jours.
  • Avec split-elog paramétré, les informations d'elog seront sauvegardés dans le sous-répertoire "catégorie-nom" de la variable ${PORTAGE_LOGDIR}/elog.
  • Avec split-log paramétré, les journaux de compilations sont sauvegardés dans le sous-répertoire "catégorie-nom" de la variable ${PORTAGE_LOGDIR}/build.

Avant la version 2.3.53 de Portage, la variable PORTAGE_LOGDIR était nommée PORT_LOGDIR. Ce nom est désormais obsolète.

Nettoyage

Lorsque l'option clean-logs est activé dans la variable FEATURES de /etc/portage/make.conf, Portage exécutera la commande définit par PORTAGE_LOGDIR_CLEAN après chaque compilation ou opération de suppression (NdT: d'un paquet). Par défaut, la commande par défaut est utilisée :

FILE /usr/share/portage/config/make.globals
PORTAGE_LOGDIR_CLEAN="find \"\${PORTAGE_LOGDIR}\" -type f ! -name \"summary.log*\" -mtime +7 -delete"

Lorsqu'une commande personnalisée est définit, ne pas oublier d’échapper la variable PORTAGE_LOGDIR (ou entrer les informations en brut directement à l'emplacement adéquate).

Avant la version 2.3.53 de Portage, la variable PORTAGE_LOGDIR_CLEAN était nommée PORT_LOGDIR_CLEAN. Ce nom est désormais obsolète.

Autres journaux de Portage

Portage peut aussi journaliser les fichiers dans /var/log/emerge.log et /var/log/emerge-fetch.log.

Voir aussi

  • Elogv — a curses-based tool that parses the contents of elogs created by Portage.

Ressources externes