Korrekte Anwendung von "unattended-upgrades" für Auto-Update

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
KloBoBBerLe
Beiträge: 105
Registriert: 16.03.2013 14:29:42

Korrekte Anwendung von "unattended-upgrades" für Auto-Update

Beitrag von KloBoBBerLe » 31.12.2015 10:02:28

Liebe Leser,

ich habe eine kurze Frage zur korrekten Anwendung der automatischen Update-Installation per Nutzung des Pakets unattended-upgrades:

Mit dem Befehl

Code: Alles auswählen

apt-get install unattended-upgrades
wird bekanntlich obiges Paket installiert, woraufhin unter anderem die Datei /etc/apt/apt.conf.d/50unattended-upgrades erstellt wird. Diese Datei dient als Konfigurationsdatei, in der die künftig gewünschten Update-Wünsche hinterlegt werden können.

Letztlich muss das Paket zur späteren Anwendung scheinbar nur noch aktiviert werden:

Code: Alles auswählen

sudo dpkg-reconfigure --priority=low unattended-upgrades
Mein Wunsch ist nun, lediglich Sicherheitsaktualisierungen (Security-Updates) automatisch in das System einspielen zu lassen. Schreibe ich nun folglich einfach die Zeilen

Code: Alles auswählen

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
       "${distro_id}:${distro_codename}-security";
//     "${distro_id}:${distro_codename}-updates";
//     "${distro_id}:${distro_codename}-proposed";
//     "${distro_id}:${distro_codename}-backports";
};
in die Datei /etc/apt/apt.conf.d/50unattended-upgrades, und damit ist dann alles erledigt? Von allowed origins hatte ich in der originalen Datei nämlich nichts gefunden, weshalb ich davon ausgehe, diese Zeilen zusätzlich einfügen zu müssen?

Und müssen die Variablen distro_id und distro_codename noch durch die realen Bezeichnungen ersetzt werden (distro_id wäre debian, distro_codename wäre jessie)?

Ganz herzlichen Dank für Eure Hilfe! :)

Viele Grüße
KloBoBBerLe

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von uname » 31.12.2015 11:54:06

Die Frage ist was du genau erreichen willst. Da du wahrscheinlich nach einem (manuellen) Release-Wechsel die Konfiguration nicht anpassen möchtest, solltest du statt "jessie" z.B. "stable" eintragen.

Persönlich sehe ich das alles nicht so eng. Eigentlich wird während des Releases fast nichts außerhalb von Security ausgetauscht. Daher lasse ich einfach alle Aktualisierungen basierend auf meine Paketlisten zu. Wichtiger erscheinen mir korrekte Paketlisten als irgendwelche Steuerungen über Unattended-Upgrades steuern zu wollen.

Hier meine recht einfache Konfiguration:

Code: Alles auswählen

Unattended-Upgrade::Origins-Pattern {
	"o=*";
};

TomL

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von TomL » 31.12.2015 12:08:00

Moin

Das ist ein perfekter Betreff, bei dem ich mich mit einer eigenen Frage anschliessen möchte. "unattended-upgrades" erachte ich als gutes Werkzeug, wenn man eine Maschine aktuell halten will, die 7/24 läuft. Wie sieht es aber mit einem normalen Benutzer-PC aus, der bei Bedarf ein- und anschließend wieder ausgeschaltet wird?

Der Gedanke, der mich dabei beschäftigt, betrifft die Übertragungsraten. Manchmal habe ich tagsüber einen Download mit 2 MB/s, manchmal (in der Abends-Rush-Hour, wenn zudem auch noch Junior zockt) aber nur 100 KB/s. Und hin- und wieder kommen auch mal richtig dicke Upgrades, wie zuletzt irgendwas mit über 100 MB. Tagsüber wären die wohl fix abgearbeitet, aber abends zieht sich das mitunter eeeeendlos. Was passiert eigentlich, wenn die Chefin abends um 9 nur mal eben am Laptop ihre Mails abholen will und der Laptop meint, jetzt mache ich auch mal ein Upgrade und die Chefin schaltet die Machine nach den Mails einfach aus, weil sie vom Upgrade nix mitbekommt? Setzen die "unattendet-upgrades" beim nächsten Start am "verlorenen" Punkt einfach neu auf oder kann beim Ausschalten auch mal was kaputt gehen, was man mit "reconfigure" wieder manuell reparieren muss?

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von uname » 31.12.2015 12:14:14

TomL hat geschrieben:Wie sieht es aber mit einem normalen Benutzer-PC aus, der bei Bedarf ein- und anschließend wieder ausgeschaltet wird?
Unattended-Upgrades ist gerade für diese Fälle geeignet. Generell ist es so, dass die Updates erst zufällig ich glaube innerhalb der ersten 10 Minuten nach dem Booten kontrolliert werden. Der Download ist unkritisch. Bevor nicht alles gedownloadet wurde passiert rein gar nichts. Da kann man auch mal zwischendurch Booten. Würde man versuchen den Rechner runterzufahren während des Installierens (was schon eher kritisch ist) würde das Runterfahren sich entsprechend verzögern (root hat mehr Rechte als der Benutzer ;-) ) . Leider hat hiervon noch keiner meiner Bekannten etwas erzählt und ich habe es auf meinem eigenen System auch noch nicht gemerkt. Natürlich sollte man den Rechner nicht hart ausschalten. Aber zufällig diesen Zeitraum zu treffen ist unwahrscheinlich. Wie gesagt der Zeitraum des Downloads ist hierbei vollkommen irrelevant und kann gerne Stunden oder Tage dauern.

Offtopic:
Einige Router bieten Bandbreitenkontrolle an. So könntest du sicherstellen, dass alle Rechner mindestens 10% oder mehr der Bandbreite erhalten. Dann funktioniert auch der Download der Debian-Pakete einigermaßen schnell.

KloBoBBerLe
Beiträge: 105
Registriert: 16.03.2013 14:29:42

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von KloBoBBerLe » 31.12.2015 15:47:32

Ganz herzlichen Dank für Eure netten Antworten! :-)
uname hat geschrieben:Die Frage ist, was du genau erreichen willst. Da du wahrscheinlich nach einem (manuellen) Release-Wechsel die Konfiguration nicht anpassen möchtest, solltest du statt "jessie" z.B. "stable" eintragen.
In der Tat! Übrigens habe ich soeben gelesen, dass meine ursprünglich manuell erweiterte Konfiguration hinsichtlich der Allowed-Origins in /etc/apt/apt.conf.d/50unattended-upgrades zwischenzeitlich veraltet ist und so nicht mehr genutzt werden kann/soll:

Code: Alles auswählen

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
       "${distro_id}:${distro_codename}-security";
//     "${distro_id}:${distro_codename}-updates";
//     "${distro_id}:${distro_codename}-proposed";
//     "${distro_id}:${distro_codename}-backports";
};
Um lediglich Sicherheitsaktualisierungen zu erhalten reicht es scheinbar aus, nach der Installation von unattended-upgrades ohne jegliche Änderung der Default-Konfiguration von /etc/apt/apt.conf.d/50unattended-upgrades einfach nur die automatische Aktualisierung per

Code: Alles auswählen

sudo dpkg-reconfigure --priority=low unattended-upgrades
zu aktivieren. Ausschließlich bei Sonderwünschen muss die Datei /etc/apt/apt.conf.d/50unattended-upgrades entsprechend angepasst werden, nicht jedoch für die gewöhnlichen Sicherheitsupdates.

DAS ist ja wirklich kinderleicht! :-)

Viele Grüße
KloBoBBerLe

KloBoBBerLe
Beiträge: 105
Registriert: 16.03.2013 14:29:42

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von KloBoBBerLe » 20.03.2016 15:33:10

Bitte entschuldigt, dass ich dieses Topic wieder hervorkrame... :oops:

Kann denn im Befehl

Code: Alles auswählen

sudo dpkg-reconfigure --priority=low unattended-upgrades
die Angabe

Code: Alles auswählen

--priority=low
eigentlich auch einfach weggelassen werden? Dieser Parameter definiert ja lediglich temporär, dass im Falle von Rückfragen durch das System bereits bei jeder Kleinigkeit nachgefragt werden soll. Da diese Angabe allerdings nur temporär und somit einmalig gilt, so ist diese ja auch nur für diesen einmaligen dpkg-reconfigure-Befehl gültig. Nicht jedoch für die anschließenden automatischen Upgrades.

Oder verstehe ich da was falsch?

Besten Dank für Eure Unterstützung! :)

Viele Grüße
KloBoBBerLe

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Korrekte Anwendung von "unattended-upgrades" für Auto-Up

Beitrag von rendegast » 20.03.2016 16:03:57

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.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten