Portage napló
A Portage napló a csomagok telepítésekor, frissítésekor vagy eltávolításakor nyújt információkat.
Amikor az emerge parancsot használjuk egy programcsomag elkészítésére, nem ritka, hogy magától a Portage csomagkezelőtől érkeznek üzenetek. Mivel fontos információkat tartalmazhatnak a Gentoo fejlesztőktől, jó ötlet elolvasni őket, de gyakran ez nem lehetséges azonnal, mert gyorsan továbbgördülnek a képernyőről. Ez könnyen megoldható az Portage csomagkezelő elog nevű feature engedélyezésével, aminek az a célja, hogy az üzeneteket lemezre mentse a későbbi áttekintés céljából. De más naplózási lehetőségek is léteznek...
Portage elog alrendszer
A Portage elog alrendszer nyomon követi azokat a konkrét, ebuild által biztosított naplóüzeneteket, amelyeket a fejlesztők a ebuild-be helyeztek el, hogy felkeltsék a rendszer adminisztrátor vagy a rendszergazda (root) felhasználó figyelmét. Gyakran ezek az üzenetek fontos vagy érdekes információkat tartalmaznak az említett csomag létrehozásával kapcsolatban.
Beállítást
Válassza ki, hogy a PORTAGE_ELOG_CLASSES változón keresztül milyen információkat kell naplózni. Lehetséges értékek a info
, warn
, error
, log
, és qa
:
PORTAGE_ELOG_CLASSES="log warn error"
Fájl alapú tárolás beállítása
A Portage számos módon tudja kezelni az elog eseményeket.
Az elog események lemezre mentéséhez engedélyezze a save
modult a PORTAGE_ELOG_SYSTEM változóban:
# Warning: just 'save' won't show messages on emerging! Add 'echo' to save *AND* show.
#PORTAGE_ELOG_SYSTEM="save"
# Show messages after emerging *and* save
PORTAGE_ELOG_SYSTEM="echo save"
Az üzenetek a /var/log/portage/elog vagy a ${PORTAGE_LOGDIR}/elog könyvtárba kerülnek mentésre, ha az említett változó be van állítva.
Kategóriánkénti elog fájlok létrehozásához engedélyezze a split-elog
Portage lehetőséget. Arra kényszeríti a Portage csomagtárolót, hogy kategória alapú alkönyvtárakat hozzon létre az /var/log/portage/elog helyhez.
Emellett kategóriánkénti összeállítási naplók létrehozásához engedélyezze a split-log
Portage szolgáltatást. Arra kényszeríti a Portage-et, hogy kategória alapú alkönyvtárakat hozzon létre a /var/log/portage/build helyhez.
Szkript a naplók kereséséhez
Amikor a naplófájlok szét vannak osztva, akkor kicsit idegesítő lehet egyenként végignézni őket. Itt van egy példaszkript a dátumozott módon történő fájlba íráshoz:
#!/bin/bash
# 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!
# 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
# Set periods to check. These strings are interpreted by the "date" tool.
declare -a days=("today" "yesterday")
# Change the array to the custom dates if they're declared.
[ -n "$GET_DATES" ] && declare -a days=("$GET_DATES")
# 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")
# 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
Konfigurálás e-mail -ekbe történő elküldésre
A naplófájlok e-mail címzetteknek történő elküldéséhez engedélyezze a mail
modult. A mail opció néhány további változót igényel. További információkért olvassa el a /usr/share/portage/config/make.conf.example leírást.
Alább látható egy példabeállítás, amely remélhetőleg magától értetődő:
# This will _only_ email; you may want to do "mail save" or similar instead.
PORTAGE_ELOG_SYSTEM="mail"
# First the mail-to address, then the 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}"
Másik példa a nullmailer-re vagy a sendmail-re:
# This will _only_ email; you may want to do "mail save" or similar instead.
PORTAGE_ELOG_SYSTEM="mail"
# First the mail-to address, then the 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}"
Kapcsolódó szoftver
A következő lista az elog-hoz kapcsolódó szoftvercsomagról készült:
- app-portage/elogv - Curses alapú segédprogram az elogok tartalmának elemzésére.
- app-portage/elogviewer - Python alapú elog néző.
Naplók építése
A csomagösszeállítási naplók elmenthetők lemezre vagy elküldhetők távoli címzettnek az make.conf változók beállításával. Ez lehetővé teszi a rendszergazdák számára, hogy később áttekintsék a csomaglétrehozások folyamairól készült naplókat.
Alapértelmezés szerint, amikor az emerge fut, a Portage ideiglenesen elmenti a csomaglétrehozási naplóját a /var/tmp/portage/<category>/<packagename-version>/temp/build.log mappába. A csomaglétrehozási könyvtár törlődik, amikor az emerge sikeresen befejeződik, így a sikeres csomaglétrehozási naplók elvesznek. Ha azonban egy csomaglétrehozás meghiúsul, akkor a naplók megmaradnak, így a build.log továbbra is elérhető lesz. Ezáltal a támogatási jegyekhez csatolható.
Jól jegyezze meg: A build.log-ot egy extra kiterjesztés követheti, ha a compress-build-logs
be van állítva a FEATURES-ban. Az alapértelmezett PORTAGE_TMPDIR a /var/tmp. Ennek megfelelően állítsa be az elérési utat, ha valami másra van állítva a make.conf fájlban.
Mindig mentse az csomaglétrehozási naplókat
Az csomag létrehozási naplók mentésének engedélyezéséhez szerkessze a /etc/portage/make.conf fájlt, és állítsa be a PORTAGE_LOGDIR változót arra a helyre, ahová a naplófájlokat tárolni szeretné:
PORTAGE_LOGDIR="/var/log/portage"
A naplófájlok helyeként szokás a /var/log/portage lehetőséget választani, mert itt lenne az elog alrendszer elog könyvtára, ha PORTAGE_LOGDIR korábban üres vagy nem beállított volt.
Számos FEATURES beállítás megadható a /etc/portage/make.conf fájlban, amelyek befolyásolják, hogy a Portage hogyan kezeli az csomaglétrehozási naplókat:
- With
binpkg-logs
set, even binary package deployments will have their logs saved. - When
clean-logs
is set, regular log file clean operations are executed. The command that is executed is defined by PORTAGE_LOGDIR_CLEAN and defaults to a retention of the files of 7 days. - With
split-elog
set, elog notices are stored in category-named subdirectories of${PORTAGE_LOGDIR}/elog
- WIth
split-log
set, build logs are stored in category-named subdirectories of${PORTAGE_LOGDIR}/build
A Portage 2.3.53-as verziójáig a PORTAGE_LOGDIR változó neve PORT_LOGDIR volt. Ez a régi név mára elavult.
Takarítás
Ha a clean-logs
engedélyezve van a FEATURES változóban a /etc/portage/make.conf változóban, akkor a Portage a PORTAGE_LOGDIR_CLEAN által meghatározott parancsot hajtja végre minden csomaglétrehozási vagy csomagszétbontási művelet után. Alapértelmezés szerint a következő parancsot használják:
PORTAGE_LOGDIR_CLEAN="find \"\${PORTAGE_LOGDIR}\" -type f ! -name \"summary.log*\" -mtime +7 -delete"
Egyéni parancs definiálásakor ne felejtsd el kihagyni a PORTAGE_LOGDIR változót (vagy azonnal megadni kézileg a megfelelő helyet).
A Portage 2.3.53-as verziójáig a PORTAGE_LOGDIR_CLEAN változó neve PORT_LOGDIR_CLEAN volt. Ez a régi név mára elavult.
További Portage naplófájl
A Portage a /var/log/emerge.log és a /var/log/emerge-fetch.log helyeken is tartalmazhat naplófájlokat.
További olvasnivaló a témában
Külső források
- Sven Vermeulen. "Underestimated or underused: Portage (e)logging ", September 25th, 2013. Retrieved on May 30th, 2019.