Зарисовка на bash'е на тему автоапдейта.
#!/bin/bash
#update for gentoo
BEFORE=`/bin/date +%s`
LOGFILE="/var/log/update-err.log"
logg() {
case "$1" in
"0" ) /usr/bin/logger -p local7.notice -t update "successfully completed $2";;
"1" ) /usr/bin/logger -p local7.err -t update "failure $2";;
"2" ) /usr/bin/logger -p local7.info -t update "$2";;
esac
}
operator() {
/bin/sh -c "$1" 2>>$LOGFILE && logg 0 "$1" || logg 1 "$1"
}
logg 2 "Update start - $BEFORE"
operator "/usr/bin/eix-sync"
operator "/usr/bin/emerge -DuN --keep-going y @world"
operator "/usr/bin/emerge @preserved-rebuild"
XORG=`FORMAT='<installedversions:INSTFORMAT>\n' INSTFORMAT='{first}{}<date:DATEFORMAT>{!last}{}' DATEFORMAT='%s' /usr/bin/eix -I x11-base/xorg-server`
if [ "$BEFORE" -lt "$XORG" ] ; then
operator "/usr/bin/emerge @x11-module-rebuild"
else
logg 2 "x11 module rebuild not needed"
fi
#read
#operator "/usr/bin/emerge @module-rebuild"
#operator "/usr/bin/revdep-rebuild"
Желающим воспользоваться: допилить перед использованием, у меня работает, но это не значит что у вас тоже заработает. Скрипт предоставляется как есть, то бишь если что не так, то меня не пинать.
Касательно eix-sync - предполагается что он уже настроен (читать
здесь и
здесь ).
У меня скрипт висит в кроне
35 7 * * * /usr/bin/tmux new -s update -d /usr/local/bin/update
Само собой syslog и logrotate настроите сами по вкусу.
Для тех кто _не знал / забыл_
sudo less /var/log/emerge.log
sudo less /var/tmp/portage/<категория>/<имя-пакета>-<версия>/temp/build.log