Unattended Upgrades

Lesedauer: 7 Minuten

Das Paket unattended-upgrades ist ein Bestandteil von Debian-basierten Linux-Distributionen und dient der automatischen Installation von Sicherheitsupdates und wichtigen Paketaktualisierungen im Hintergrund. Es ist insbesondere dazu geeignet, die Aktualität eines Systems sicherzustellen, ohne dass der Benutzer manuell eingreifen muss.

Das Paket unattended-upgrades durchsucht regelmäßig die Paketquellen nach neuen Updates und installiert diese automatisch. Die Konfiguration des Pakets erlaubt die Festlegung, ob lediglich sicherheitsrelevante Updates installiert werden sollen, oder ob auch andere Arten von Updates, je nach Bedarf und Präferenz, installiert werden sollen.

Quick Configuration

Installation des Dienst unanttended-upgrades:

$ sudo apt install unattended-upgrades

Konfiguration der automatischen Updates:

$ sudo dpkg-reconfigure --priority=low unattended-upgrades

Neustart der Komponenten:

$ sudo systemctl restart unattended-upgrades

Installation (Default)

Der Ubuntu-Installer bietet die Installation und Aktivierung des unattended-upgrade-Dienstes bereits während der Installation des Systems an:

Auf Debian-Systemen muss der Dienst nachträglich installiert werden. Ob der Dienst bereits installiert ist, kann mit folgendem Kommando überprüft werden:

$ systemctl status unattended-upgrades
Unit unattended-upgrades.service could not be found.

Folgendes Kommando installiert das Paket unattended-upgrades:

$ sudo apt install unattended-upgrades apt-listchanges

Das Paket apt-listchanges ist optional und kann für Systeme, die Statusmeldungen per E-Mail versenden, verwendet werden, um den Administrator über anstehende Updates zu informieren und weitere Details dazu anzuzeigen.

Damit ist das Paket unattended-upgrades auf Ihrem System installiert und der Dienst aktiviert:

$ systemctl status unattended-upgrades
● unattended-upgrades.service - Unattended Upgrades Shutdown
     Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-05-31 11:50:07 CEST; 7s ago
       Docs: man:unattended-upgrade(8)
   Main PID: 1875 (unattended-upgr)
      Tasks: 2 (limit: 2265)
     Memory: 13.8M
        CPU: 81ms
     CGroup: /system.slice/unattended-upgrades.service
             └─1875 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal

Konfiguration (Default)

Autoupdate aktivieren

Um die automatischen Updates grundlegend zu konfigurieren und zu aktivieren führen Sie folgendes Kommando aus:

$ sudo dpkg-reconfigure --priority=low unattended-upgrades
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version

Die Datei /etc/apt/apt.conf.d/20auto-upgrades steuert, wie oft unattended-upgrades verschiedene Aufgaben durchführt, einschließlich der Aktualisierung des Paket-Caches und der Installation von Updates. Folgende Optionen sind nach einer Standardkonfiguration aktiviert:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
  • Update-Package-Lists "1": Diese Einstellung sorgt dafür, dass die Paketlisten einmal täglich ("1") aktualisiert werden. Dies entspricht dem Befehl apt update und stellt sicher, dass das System immer über die neuesten Informationen zu verfügbaren Paketen und Updates verfügt.
    (0 = disabled)
  • Unattended-Upgrade "1": Diese Einstellung sorgt dafür, dass unattended-upgrades einmal täglich ("1") ausgeführt wird. unattended-upgrades installiert automatisch verfügbare Updates aus den für diesen Prozess eingestellten Repositories.
    (0 = disabled)

Repositories

Die Konfigurationsdateien des unattended-upgrades-Dienstes befinden sich in /etc/apt/apt.conf.d. Die Installation von unattended-upgrades legt dort bereits eine Voreinstellung an. Die Datei /etc/apt/apt.conf.d/50unattended-upgrades legt zunächst die Repositories fest:

Unattended-Upgrade::Origins-Pattern {
//      "origin=Debian,codename=${distro_codename}-updates";
//      "origin=Debian,codename=${distro_codename}-proposed-updates";
        "origin=Debian,codename=${distro_codename},label=Debian";
        "origin=Debian,codename=${distro_codename},label=Debian-Security";
        "origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};
Unattended-Upgrade::Package-Blacklist {
};

In der Standardkonfiguration sind nur die Repositories in den Zeilen 4, 5 und 6 aktiviert.

  • "-updates": Das -updates Repository wird speziell für dringende und kritische Updates verwendet, die nicht bis zum nächsten regulären Punkt-Release warten können.
  • "-proposed-updates": Das -proposed-updates Repository enthält vorgeschlagene Updates, die für das nächste Punkt-Release getestet werden. Diese Updates sind noch nicht vollständig freigegeben und könnten noch in einer Testphase sein, daher werden sie standardmäßig nicht aktiviert, um die Stabilität des Systems zu gewährleisten.
  • ",label=Debian": Umfasst alle offiziell veröffentlichten Updates, einschließlich neuer Paketversionen und allgemeiner Fehlerbehebungen.
  • ",label=Debian-Security": Dieses Repository bezieht sich auf Sicherheitsupdates aus dem speziell als Sicherheitsrepository gekennzeichneten Haupt-Repository der aktuellen Debian-Distribution. Diese Updates werden als Teil des Haupt-Veröffentlichungskanals mit dem Label "Debian-Security" bereitgestellt.
  • "-security,label=Debian-Security": Hierbei handelt es sich um ein separates Repository, das speziell für Sicherheitsupdates eingerichtet wurde und das Suffix -security im Codenamen trägt. Dieses Repository ist speziell dafür vorgesehen, Sicherheitsupdates unabhängig vom allgemeinen Repository bereitzustellen.

Neustart von unattended-upgrades

Führen Sie zum Abschluss der Konfiguration eines Neustart des unattended-upgrades Dienst durch, um Ihre Einstellungen zu übernehmen:

$ sudo systemctl restart unattended-upgrades

Steuern der Timer

unattended-upgrades verwendet standardmäßig zwei systemd-Timer: apt-daily.timer und apt-daily-upgrade.timer. Diese Timer legen fest, wann die Update- und Upgrade-Prozesse gestartet werden.

Anzeige des aktuellen Status der Zeitintervalle für die Aktualisierung (Update Timer):

$ sudo systemctl list-timers
NEXT                             LEFT LAST                              PASSED UNIT                           ACTIVATES               
Fri 2024-05-31 23:41:20 UTC       10h Tue 2024-05-28 19:17:19 UTC            - apt-daily.timer                apt-daily.service
Sat 2024-06-01 06:18:23 UTC       16h Fri 2024-05-31 13:34:18 UTC 3min 18s ago apt-daily-upgrade.timer        apt-daily-upgrade.service

Standardmäßig wird der apt-daily.timer zweimal täglich um 06:00 Uhr und 18:00 Uhr gestartet. Der apt-daily-upgrade.timer wird einmal um 06:00 Uhr gestartet. (Für beide Zeiten ist ein zufälliger Zeitversatz eingestellt, um eine Lastverteilung in größeren Infrastrukturen zu erreichen.)

Wenn Sie andere Zeiten benötigen, zum Beispiel um Wartungs- oder Backup-Zeiten zu vermeiden, können Sie die Zeiten mit dem systemctl edit Kommando benutzerdefiniert einstellen:

(Beispiel)

$ sudo systemctl edit apt-daily-upgrade.timer
### Editing /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
### Anything between here and the comment below will become the contents of the drop-in file

[Timer]
OnCalendar=*-*-* 14:15
RandomizedDelaySec=60m
Persistent=true

### Edits below this comment will be discarded


### /usr/lib/systemd/system/apt-daily-upgrade.timer
# [Unit]
# Description=Daily apt upgrade and clean activities
# After=apt-daily.timer
#
# [Timer]
# OnCalendar=*-*-* 6:00
# RandomizedDelaySec=60m
# Persistent=true
#
# [Install]
# WantedBy=timers.target

Achten Sie darauf, ob die Zeiten in Ihrem System auf UTC oder auf eine Zeitzone (z.B. CEST) eingestellt sind. Entsprechend müssen Sie die Zeiten auch in den Konfigurationsdateien einstellen. Dies kann je nach Distribution unterschiedlich sein.

Starten Sie im Anschluss den Daemon und die APT Timer neu:

$ sudo systemctl daemon-reload
$ sudo systemctl restart apt-daily.timer
$ sudo systemctl restart apt-daily-upgrade.timer

Überprüfen Sie die Konfiguration:

$ sudo systemctl cat apt-daily-upgrade.timer
# /usr/lib/systemd/system/apt-daily-upgrade.timer
[Unit]
Description=Daily apt upgrade and clean activities
After=apt-daily.timer

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true

[Install]
WantedBy=timers.target

# /etc/systemd/system/apt-daily-upgrade.timer.d/override.conf
[Timer]
OnCalendar=*-*-* 14:15
Persistent=true

Automatischer Neustart

In hochautomatisierten Umgebungen kann es sinnvoll sein, die Systeme regelmäßig automatisch neu zu starten. Dies stellt sicher, dass Updates eingespielt werden, die einen Neustart erfordern, wie z.B. Kernel-Updates. Der Neustart kann in der unattended-upgrades Konfigurationsdatei /etc/apt/apt.conf.d/50unattended-upgrades konfiguriert werden. Kommentieren Sie dazu die folgenden Zeilen aus und setzen Sie Automatic-Reboot auf true:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";
Unattended-Upgrade::Automatic-Reboot-Time "19:00";

Diese Einstellungen stellen sicher, dass bei Vorhandensein der Datei /var/run/reboot-required das System zur angegebenen Zeit neu gestartet wird, auch wenn ein Benutzer am System angemeldet ist.

Debug

Um die Konfiguration zu testen, kann unattended-upgrade auf der Konsole ausgeführt werden. Das Skript akzeptiert mehrere Optionen:

  • --debug: Führt unattended-upgrades durch und schreibt detaillierte Debug-Informationen nach /var/log/unattended-upgrades/unattended-upgrades.log
  • --dry-run: Simuliert den Prozess und nimmt keine Änderungen am System vor.
$ sudo unattended-upgrade --dry-run

Logs

  • /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
  • /var/log/unattended-upgrades/unattended-upgrades.log
  • /var/log/unattended-upgrades/unattended-upgrades-shutdown.log

Loading

Updated on 31. Mai 2024
Was this article helpful?

Related Articles