Hier beschreibe ich das Updaten von Debian- und Ubuntuservern. Wie man Proxmox Virtual Environments aktuell hält, habe ich unter https://tutorials.kernke.koeln/serveranwendungen/paperless-ngx.html beschrieben. Das Updaten von Docker-Containern habe ich beispielhaft unter https://tutorials.kernke.koeln/serveranwendungen/paperless-ngx.html beschrieben.
Wenn man manuell prüfen möchte, ob für das System updates vorliegen, dann verwendet man dazu den Befehl
sudo apt update
der dafür sorgt, dass die Paketverwaltung aktualisiert wird. Damit werden aber keine Updates installiert. Möchte man wissen, welche Updates verfügbar sind, dann kann man das mit dem Befehl
sudo apt list --upgradable
tun. Zweckmäßig kann es auch sein, die Auflistung der zu aktualisierenden Pakete abzuspeichern, um ggf. Updates, die Probleme machen, wieder zurück zu nehmen. Dazu gibt man ein:
sudo apt list --upgradable >updates.txt
Dann kann man bei Bedarf die gewünschten Updates mit
sudo apt upgrade [paketname]
installieren. Ohne Angabe von Paketnamen werden alle Pakete, für die neue Versionen vorliegen, aktualisiert. Wenn man keinen Anlass hat, bei Updates einzelne Pakete auszulassen, dann kann man auch gleich die Befehlskombination
sudo apt update && sudo apt upgrade -y
verwenden, um ohne Nachfrage alles zu aktualisieren, für das es aktuelle Pakete gibt.
Sollte durch ein Update einmal etwas kaputt gehen (was so gut wie nie der Fall ist), dann muss man ggf. die störenden Pakete wieder auf die vorherige Version zurück setzen (downgraden). Wenn man, wie oben empfohlen, die Ausgabe der zu aktualisierten Pakete, die ja auch die Ausgangsversionen enthält, gesichert hat, dann hat man Glück. Ansonsten muss man im Verzeichnis „/var/cache/apt/archives/“ nachsehen, welches die letzten funktionierenden Paketversionen waren. Dazu setzt man auf der Konsole den Befehl
sudo cat /var/log/apt/history.log
ab. Hat zum Beispiel das Update von gnupg-l10n Probleme bereitet, dann sucht man in der Ausgaben des obigen Befehls nach den entsprechenden Einträgen und findet (u.a.)
gnupg-l10n:amd64 (2.4.4-2ubuntu17, 2.4.4-2ubuntu17.2)
Mir dem Befehl
sudo apt install gnupg-l10n=2.4.4-2ubuntu17
kann man dann den Downgrade anstoßen.
Wenn man keine Bedenken hat, alle Pakete immer zu aktualisieren, wenn es neue Versionen gibt, dann kann man die Updates auch automatisieren. Das sollte man aber nur tun, wenn man regelmäßige Snapshotsicherungen durchführt, die man zurückspielen kann, wenn einem ein Update etwas kaputt macht. Für automatische Updates muss das Paket unattended-upgrades installiert werden:
sudo apt-get install unattended-upgrades
Mit dem Befehl
sudo dpkg-reconfigure -plow unattended-upgrades
kann man nachträglich noch einstellen, ob man das wirklich tun will (???). Wichtiger sind die Parameter in der Datei /etc/apt/apt.conf.d/10periodic, die man erst anlegen muss mit dem Befehl
sudo nano /etc/apt/apt.conf.d/10periodic
Dort müssen mindestens die Einträge
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::Unattended-Upgrade "1";
vorgenommen werden. In der Datei /etc/apt/apt.conf.d/50unattended-upgrades können weitere Einstellungen vorgenommen werden. Hier sollten die beiden "/" vor " "${distro_id} ${distro_codename}-updates"; entfernt werden, damit nicht nur Sicherheitsupdates installiert werden. Log-Dateien werden im Verzeichnis /var/log/unattended-upgrades/ gespeichert.
In der Datei /etc/apt/apt.conf.d/10periodic könnte man angeben, dass das System nach jedem Update rebootet. Das ist aber nicht nötig, schließlich handelt es sich nicht um ein Windoof-System. Von Zeit zu Zeit tut aber ein Reboot auch einem Linux-Server gut, um manche Updates auch wirksam zu machen. Das kann man mit einem Cronjob automatisieren. Dazu bearbeitet man z.B. die Datei /etc/contab mit
sudo nano /etc/crontab
und fügt eine neue Zeile
0 1 * * 0 root /sbin/shutdown -r now
Ein. Dann bootet der Rechner an jedem Sonntag um 1:00 Uhr neu. Sollte gerade ein Update laufen, dann würde der Reboot verzögert, bis das Update abgeschlossen ist. Nun braucht man sich um nichts weiter zu kümmern, außer gelegentlich die Logfiles zu prüfen.