In diesem speziellen Fall betrifft die einzige Frage
20auto-upgrades
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
resp.
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
--low oder --high habe ich wissentlich nie verwendet.
Für dieses spezielle Paket überschreibe ich die Ausführung auch,
sie wird abhängig von einem korrekten Durchlauf von '... update'.
Klappt dieses nämlich nicht, was gelegentlich auftritt, so würde unattended-upgrade dennoch versuchen damit zu arbeiten.
Das kann üble Folgen haben (ich benutze hier ein komplexeres Setup von Repos).
/etc/cron.d/AA_atreboot:
Code: Alles auswählen
@reboot root cd / && run-parts --report /etc/cron.atreboot
(einfache Abarbeitung eines Hilfsverzeichnisses)
/etc/cron.atreboot/init_aaa_apt_lokal:
Code: Alles auswählen
#!/bin/sh
#20150918
# Dies soll ein Vorprozess/Erweiterung fuer /etc/cron.daily/apt (unattanded-upgrade) sein
# Update der Packages-Listen mit Kontrolle, erst dann Erlaubnis fuer download/Upgrade
# (Ein unkorrektes List-Update kann "Teufels Kueche" nach sich ziehen)
FILE=/var/run/zzvarrun_apt
LNK=/etc/apt/apt.conf.d/zzvarrun_apt
PDIR=/var/lib/apt/lists/partial
NO='
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::Unattended-Upgrade "0";
APT::Periodic::Update-Package-Lists "0";
'
YES='
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Update-Package-Lists "0";
'
# eine Datei in /var/run
[ "x$(readlink -f $LNK)" = "x$FILE" ] || ln -sf $FILE $LNK
echo "$NO" > $FILE
Beim Systemstart wird der Durchlauf von unattended-upgrades erstmal unterbunden
(apt-conf.d/zz... alphabetisch hinten in der Dateiliste beim Auswerten durch apt)
/etc/cron.daily/aaa_apt_lokal:
Code: Alles auswählen
#!/bin/sh
#20150918
# Dies soll ein Vorprozess/Erweiterung fuer /etc/cron.daily/apt (unattanded-upgrade) sein
# Update der Packages-Listen mit Kontrolle, erst dann Erlaubnis fuer download/Upgrade
# (Ein unkorrektes List-Update kann "Teufels Kueche" nach sich ziehen)
FILE=/var/run/zzvarrun_apt
LNK=/etc/apt/apt.conf.d/zzvarrun_apt
PDIR=/var/lib/apt/lists/partial
NO='
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::Unattended-Upgrade "0";
APT::Periodic::Update-Package-Lists "0";
'
YES='
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Update-Package-Lists "0";
'
# eine Datei in /var/run
[ "x$(readlink -f $LNK)" = "x$FILE" ] || ln -sf $FILE $LNK
echo "$NO" > $FILE
[ "$(( $(date +%s) - $(date -r $PDIR +%s) ))" -gt "$((86400 / 2))" ] && dselect update > /dev/null
[ "x$(ls -l $PDIR | wc -l)" = "x1" ] && echo "$YES" > $FILE
Ich verwende hier dselect (nur für das '.. update', wegen des vollen Erzeugnisses in /var/lib/dpkg/), apt/apt-get/aptitude gingen genauso.
Das Skript wird wegen "aaa_..." vor /etc/cron.daily/apt durchgeführt.