Portage Log

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Portage log and the translation is 29% complete.
Outdated translations are marked like this.
Other languages:

The Portage log provides information when installing, updating, or removing packages.

Wenn Sie emerge zum Bau eines Paketes verwenden, ist es nicht ungewöhnlich Meldungen die von Portage selbst kommen zu bemerken. Weil sie wichtige Informationen von Gentoo Entwicklern beinhalten können, ist es eine gute Idee sie zu lesen. Das ist aber oft nicht sofort möglich, weil sie schnell aus dem Bildbereich scrollen. Dies kann leicht durch die Aktivierung einer Portage Funktion genannt elog gelöst werden, deren Zweck es ist Meldungen zur späteren Durchsicht auf Festplatte zu speichern. Es bestehen aber auch noch andere Aufzeichnungsmöglichkeiten ...

Das Portage elog Teilsystem behält bestimmte von ebuild gelieferte Log-Meldungen im Auge, die von Entwicklern in die ebuilds gepackt wurden um die Aufmerksamkeit des Administrators oder der Benutzer auf sich zu ziehen. Diese Meldungen beinhalten oft wichtige oder interessante Informationen in Bezug zu den genannten Paketen.

Einrichtung

Wählen Sie durch die Variable PORTAGE_ELOG_CLASSES welche Art von Informationen geloggt werden sollen. Mögliche Werte sind info, warn, error, log und qa:

DATEI /etc/portage/make.conf
PORTAGE_ELOG_CLASSES="log warn error"

Konfiguration für Datei-basierte Speicherung

Portage kann die elog Ereignisse auf mehrere Arten handhaben.

Um die elog Ereignisse auf Festplatte zu speichern aktivieren Sie das save Modul in der Variable PORTAGE_ELOG_SYSTEM:

DATEI /etc/portage/make.conf
PORTAGE_ELOG_SYSTEM="save"
  1. Show messages after emerging *and* save

PORTAGE_ELOG_SYSTEM="echo save" }}

Die Meldungen werden in /var/log/portage/elog oder ${PORT_LOGDIR}/elog gespeichert, wenn die genannte Variable gesetzt ist.

Um in Kategorien unterteilte elog Dateien zu erzeugen, aktivieren Sie die Portage Funktion split-elog. Sie wird Portage dazu bringen Kategorie-basierte Unterverzeichnisse im Verzeichnis /var/log/portage/elog zu erzeugen.

Additionally, to create per-category build logs, enable the split-log Portage feature. It will force Portage to create category-based subdirectories of the /var/log/portage/build location.

Script to lookup logs

When the logs are split up, it's a bit annoying to look through them one by one. Here's an example script to print them using the date:

DATEI print-elog-messages.sh
#!/bin/bash
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# This script is assuming that portage is configured to log in
# /var/log/portage/elog and that it's configured to split the logged files.
#
# If you want specific dates, run the script like so:
# GET_DATES="20230101 20230102" ./print_elog_messages.sh
#
# If you want all files to be printed, run the script like so:
# GET_ALL="true" ./print_elog_messages.sh
#
# If the script filename is different, adjust accordingly!
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Check if running as root and stop if it is.
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
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Set periods to check. These strings are interpreted by the "date" tool.
declare -a days=("today" "yesterday")
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Change the array to the custom dates if they're declared.
[ -n "$GET_DATES" ] && declare -a days=("$GET_DATES")
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# If we're printing everything, there's no reason to loop multiple times and
# it would make sense to change the period to "all".
[ "$GET_ALL" == "true" ] && declare -a days=("all")
</div>

<div lang="en" dir="ltr" class="mw-content-ltr">
# Go through the periods set in the array "days" and format to find filenames
# containing YYYYmmdd, for example 20221215, since that's the format that's
# part of the filenames by default. After this, run the command cat with the
# found filenames as arguments, which adds the file contents
# to the terminal output. Remove the -n argument from cat if you don't want
# it to print the line numbers as well.
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

Für E-Mail Konfigurieren

Um Logdateien an einen Empfänger zu mailen aktivieren Sie das Modul mail. Die Mail-Option erfordert dass einige zusätzliche Variablen gesetzt sind. Lesen Sie /usr/share/portage/config/make.conf.example für weitere Informationen.

Unterhalb ist eine Beispiel-Konfiguration gezeigt, die hoffentlich selbsterklärend ist:

DATEI /etc/portage/make.conf
PORTAGE_ELOG_SYSTEM="mail"
# Zuerst die Empfangs-Mail Adresse, dann der SMTP Server
PORTAGE_ELOG_MAILURI="log-intake@example.com mail.example.com"
PORTAGE_ELOG_MAILFROM="portage@$(hostname).example.com"
PORTAGE_ELOG_MAILSUBJECT="${PACKAGE} is ${ACTION} on ${HOST}"

Ein weiteres Beispiel mit nullmailer oder sendmail:

DATEI /etc/portage/make.conf
PORTAGE_ELOG_SYSTEM="mail"
# Zuerst die Empfangs-Mail Adresse, dann der SMTP Server
PORTAGE_ELOG_MAILURI="users@host /usr/sbin/sendmail"
PORTAGE_ELOG_MAILFROM="portage@$(hostname).example.com"
PORTAGE_ELOG_MAILSUBJECT="${PACKAGE} is ${ACTION} on ${HOST}"

Ähnliche Software

Das folgende ist eine Liste von elog-ähnlichen Softwarepaketen:

Build-Logs

Mit dem Portage elog Teilsystem werden Paketerzeugungs-Logdateien auf Festplatte gespeichert oder zu einem entfernten Empfänger geschickt, unabhängig von Erfolg oder Misserfolg. Dies erlaubt es Administratoren den Bau später zu überprüfen oder Bau-Logdateien für Support-Tickets abzurufen.

By default, when emerge is running, Portage temporarily saves the build log of a package to /var/tmp/portage/<category>/<packagename-version>/temp/build.log. The build directory will be deleted when emerge finishes successfully, so successful build logs will be lost. If a build fails however, the logs will be retained, so the build.log will still be available for attaching to support tickets.

n.b. The build.log may be followed by an extra extension if compress-build-logs is set in FEATURES. The default PORTAGE_TMPDIR is /var/tmp, adjust path accordingly if it is set to something different in make.conf.

Build-Logs immer speichern

Um die Portage Protokollierung zu aktivieren bearbeiten Sie /etc/portage/make.conf und setzen Sie PORT_LOGDIR auf ein Verzeichnis in dem die Logdateien aufbewahrt werden sollen. Standardmässig verwendet Portage /var/log/portage:

DATEI /etc/portage/make.conf
PORT_LOGDIR="/var/log/portage"

It is customary to choose /var/log/portage as the location for log files, because it is where the elog subsystem's elog directory would be if PORTAGE_LOGDIR has been previously empty or unset.

Als Nächstes beeinflusst eine Anzahl von FEATURES Einstellungen wie Portage mit Build-Logs umgeht.

  • Mit gesetztem binpkg-logs werden selbst die Protokolle von Binärpaketen gespeichert
  • Wenn clean-logs gesetzt ist werden regelmässig Logdatei-Säuberungsoperationen durchgeführt. Der Befehl der ausgeführt wird ist durch PORT_LOGDIR_CLEAN definiert und standardmässig beträgt die Aufbewahrungsdauer der Dateien 7 Tage.
  • Mit gesetztem split-log werden Build-Logs in Kategorie-benannten Unterverzeichnissen von ${PORT_LOGDIR}/build aufbewahrt.

Until Portage version 2.3.53, PORTAGE_LOGDIR variable used to be named PORT_LOGDIR. This old name is now deprecated.

Aufräumen

Wenn clean-logs gesetzt ist, wird Portage nach jeder Build oder unmerge Operation den Befehl ausführen, der durch PORT_LOGDIR_CLEAN definiert ist. Standardmässig wird der folgende Befehl verwendet:

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

Falls Sie ein benutzerdefiniertes Kommando definieren, vergessen Sie nicht die Variable ${PORT_LOGDIR} zu "escapen" (oder geben sie den richtigen Ort hartkodiert an).

Until Portage version 2.3.53, PORTAGE_LOGDIR_CLEAN variable used to be named PORT_LOGDIR_CLEAN. This old name is now deprecated.

Other Portage log files

Portage also can have log files in /var/log/emerge.log, and /var/log/emerge-fetch.log.

Siehe auch

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

Externe Ressourcen