Zum Inhalt springen
SHIELDMYSERVER

Distribution aktualisieren, ohne den Dienst zu verlieren

Wann eine Version wirklich aus dem Support fällt, wie ein Sprung auf die nächste abläuft, was danach erfahrungsgemäß kaputt ist und wann Neuaufsetzen der ehrlichere Weg ist.

mittelDiesen Monat. Wichtig, aber kein Feuer.

veröffentlicht 24.06.2026 · 3 min

Titelbild: Distribution aktualisieren, ohne den Dienst zu verlieren

Ein Server läuft jahrelang gut, und genau das ist das Problem: Irgendwann fällt die Distribution aus dem Support, die Sicherheitsquelle liefert nichts mehr, und die automatischen Updates aus dem Sicherheitsupdate-Beitrag laufen ins Leere, ohne Fehlermeldung.

Warum mittel und wann kritisch

Solange die Version im Support ist, ist ein Sprung Planungssache. Ab dem Tag, an dem der Sicherheitssupport endet, wird daraus kritisch: Die Maschine sammelt dann ungepatchte Lücken, und niemand meldet es. Der Übergang ist ein Datum, das man kennen sollte.

Wo stehe ich, und wie lange noch?#

. /etc/os-release && echo "$PRETTY_NAME"
cat /etc/debian_version 2>/dev/null

# Bekommt die Sicherheitsquelle überhaupt noch etwas?
grep -r security /etc/apt/sources.list /etc/apt/sources.list.d/
sudo apt update 2>&1 | grep -i 'security\|404\|nicht mehr'

Ein 404 auf die Sicherheitsquelle ist die deutlichste Antwort: Der Support ist vorbei. Bei Debian ist der reguläre Sicherheitssupport rund drei Jahre nach Erscheinen einer Hauptversion zu Ende, danach übernimmt für begrenzte Zeit das LTS-Team mit eingeschränktem Umfang. Bei Ubuntu LTS sind es fünf Jahre für die Hauptkomponenten. Die genauen Daten stehen bei der jeweiligen Distribution, sie gehören ins Kalender, nicht ins Gedächtnis.

Vorbereitung#

# 1. Vollständiges Backup, außerhalb der Maschine.
#    Bei einem Distributionssprung ist das keine Formalie.

# 2. Aktueller Stand der alten Version
sudo apt update && sudo apt full-upgrade -y
sudo apt autoremove --purge -y

# 3. Was hängt an Fremdquellen? Das bricht am häufigsten.
grep -rl . /etc/apt/sources.list.d/ | xargs -r grep -H '^deb'

# 4. Was ist von Hand installiert, außerhalb der Paketverwaltung?
ls -la /usr/local/bin /opt

# 5. Zurückgehaltene Pakete auflösen
apt-mark showhold

Punkt 3 ist der wichtigste. Fremdquellen (Docker, Node, PostgreSQL, Proxmox) haben eigene Namen pro Distributionsversion. Bleiben sie auf dem alten Namen stehen, bricht der Sprung mittendrin.

Nicht über SSH ohne Rückfallebene

Ein Distributionssprung startet den SSH-Dienst neu und tauscht dabei Bibliotheken. Bricht die Verbindung mitten im Vorgang ab, bleibt die Paketverwaltung in einem halben Zustand zurück. Zwei Vorkehrungen: den Vorgang in tmux oder screen laufen lassen, damit er ohne dich weiterläuft und den Konsolenzugang des Anbieters bereitliegen haben.

sudo apt install -y tmux
tmux new -s upgrade
# Bei Verbindungsabbruch: erneut anmelden und "tmux attach -t upgrade"

Der Sprung#

Bei Debian, exemplarisch von einer Version auf die nächste:

# Quellen umschreiben — Namen der Zielversion einsetzen
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/*.list 2>/dev/null

sudo apt update
sudo apt upgrade --without-new-pkgs      # erst der kleine Schritt
sudo apt full-upgrade                    # dann der vollständige

Der zweigeteilte Weg ist Absicht: upgrade --without-new-pkgs erneuert, was ohne neue Abhängigkeiten geht, und verkleinert damit den Schritt, in dem etwas schiefgehen kann.

Während des Vorgangs kommen Rückfragen zu geänderten Konfigurationsdateien. Die richtige Antwort ist fast immer „die eigene behalten“ und danach die Unterschiede nachsehen:

# Wo weichen eigene Dateien von den Paketvorgaben ab?
sudo apt install -y debsums
sudo find /etc -name '*.dpkg-dist' -o -name '*.ucf-dist' | head -20

Danach: was erfahrungsgemäß kaputt ist#

# Fehlgeschlagene Dienste
systemctl --failed

# Dienste, die neu gestartet werden müssten
sudo apt install -y needrestart && sudo needrestart -r l

# Reste der alten Version
grep -r 'bookworm' /etc/apt/ 2>/dev/null

# Nicht mehr benötigte Pakete
sudo apt autoremove --purge

Die vier Stellen, an denen es typischerweise hakt:

BereichWas passiertFix
Datenbankneue Hauptversion parallel installiert, alte hält die Datenpg_upgradecluster, dann alte entfernen
PHP / NodeVersion gewechselt, Anwendung erwartet die alteVersion festnageln oder Anwendung anpassen
KonfigurationsformateOptionen entfallen (z. B. bei nginx, sshd)nginx -t, sshd -t, beide melden es
FremdquellenRepository für die neue Version fehltQuelle aktualisieren, Paket neu installieren

sshd -t unbedingt vor dem nächsten Neustart des Dienstes ausführen. Entfallene Optionen lassen den Dienst sonst nicht mehr starten und der Zugang ist weg.

Wann Neuaufsetzen ehrlicher ist#

Ein Upgrade lohnt sich, wenn die Maschine gepflegt ist und wenig Handarbeit enthält. Für Neuaufsetzen spricht:

  • Zwei oder mehr Hauptversionen Rückstand. Kettensprünge sammeln Altlasten.
  • Viel von Hand installiertes unter /usr/local und /opt, dessen Herkunft unklar ist.
  • Die Maschine ist historisch gewachsen und niemand weiß mehr, warum bestimmte Dateien so aussehen.
  • Es gibt ohnehin ein Automatisierungsskript oder ein Container-Setup, mit dem der Aufbau schnell geht.

Der ehrliche Vergleich ist nicht „Upgrade dauert zwei Stunden, Neuaufbau einen Tag“, sondern: Nach dem Neuaufbau weißt du, was auf der Maschine ist. Nach dem Upgrade weißt du es bei einer gewachsenen Maschine oft nicht.

In beiden Fällen gilt derselbe Vorlauf wie in Wartungsfenster und der Weg zurück und danach ein Blick auf die Grundhärtung, weil eine frische Installation sie nicht mitbringt: Passwort-Login abschalten, eingehend dichtmachen.

MRMedia

Geschrieben aus dem laufenden Betrieb: MRMedia betreibt eigene Hosts, Kundendienste und deren Härtung in der EU. Eine veraltete Anleitung ist hier ein Sicherheitsproblem, kein Schönheitsfehler. Korrekturen bitte über Discord.