Photo by Lukas / Unsplash

Debian 10 Server auf Debian 11 upgraden

debian 8. Nov. 2022

Unser Debian Server läuft auf Debian 10, oder wurde so an uns übergeben. Eine Aktualisierung auf Debian 11 steht an. Das packen wir heute an.

Verbinden zum Server

Mit SSH eine Verbindung zum Server herstellen. Der gewählte Benutzer muss "sudo" Berechtigungen haben.

ssh USER@HOSTMANE/IP

Eingabe - SSH Verbindung zum Server aufbauen

Version überprüfen

Wir prüfen als erstes ob wirklich Debian 10 auf unserem Server installiert ist.

lsb_release -a

Eingabe

No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

Ausgabe - Wichtig hier ist "Release 10" und Codename "buster"

Wir sind startklar. Jetzt können wir mit der aktualisierung unseres Debian 10 beginnen um dann ein Upgrade auf Debian 11 "bullseye" vorzunehmen.

Server innerhalb von Debian 10 aktualisieren

Als erstes sollten wir Updates machen um sicher zu stellen, dass alle Programme und Pakete bereit sind für den Wechsel von Debian 10 auf Debian 11.

sudo apt update

Eingabe - Paketquellen aktualisieren

OK:1 http://deb.debian.org/debian buster InRelease
Holen:2 http://deb.debian.org/debian buster-updates InRelease [56,6 kB]
Holen:3 http://deb.debian.org/debian buster/main Translation-de [1.654 kB]
Holen:4 http://deb.debian.org/debian buster/main Translation-de_DE [830 B]
Holen:5 http://security.debian.org/debian-security buster/updates InRelease [34,8 kB]
Es wurden 1.746 kB in 1 s geholt (1.582 kB/s).
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Alle Pakete sind aktuell.

Ausgabe - Paketquellen aktualisiert. In diesem Fall waren alle Pakete bereits aktuell.

Alle installierten Pakete aktualisieren.

sudo apt upgrade

Eingabe - Pakete aktualisieren

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Paketaktualisierung (Upgrade) wird berechnet... Fertig
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.

Ausgabe - Pakete aktualisiert. In diesem Fall war alles schon vorher aktuell.

Wir entfernen alle nicht mehr benötigten Pakete.

sudo apt autoremove

Eingabe - Nicht mehr benötigte Pakete von apt automatisch entfernen lassen.

Backup?

Spätestens an der Stelle sollten wir uns Gedanken über ein Backup machen. Bei vielen Anbietern gibt es diese Funktion standardmäßig. Wir machen an der Stelle ein "Snapshot" von unserem Server. Sollte so etwas nicht funktionieren können wir an diesen Punkt zurück kehren und uns bei funktionierenden Diensten genauer anschauen wo genau unser Problem liegt.

Gleichzeitig sind alle sehr wichtigen Daten bei uns mit jeweils passenden Strategien gesichert.

Wir gehen also davon aus, dass eine Sicherung eures Servers vorliegt.

Debian Sources ändern

Aptitude (Apt) lädt Pakete von sogenannten repositories für die Installation herunter. Wo Apt diese Paketquellen sucht bestimmen wir in der Datei /etc/apt/sources.list. In dieser Datei müssen wir jetzt die Codenamen von Debian 10 mit den Codenamen von Debian 11 ersetzen.

Vorher sichern wir uns diese Datei, nötig war das bei mir noch nie, aber es ist einfacher als im Falle des Falles eine Original Datei zu recherchieren.

sudo cp /etc/apt/sources.list ~/sources.bak

Eingabe - Sicherung der sources.list im Home-Verzeichnis unseres Users

nano /home/USERNAME/sources.bak

Eingabe - USERNAME mit eurem Benutzername ersetzen. "nano" ist der Editor den wir einsetzen

Es öffnet sich eine Textdatei, sehen wir Inhalte sind wir Glücklich:

#

# deb cdrom:[Debian GNU/Linux 10.0.0 _Buster_ - Official amd64 NETINST 20190706-10:23]/ buster main

#deb cdrom:[Debian GNU/Linux 10.0.0 _Buster_ - Official amd64 NETINST 20190706-10:23]/ buster main

deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main

deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main

# buster-updates, previously known as 'volatile'
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main

# This system was installed using small removable media
# (e.g. netinst, live or single CD). The matching "deb cdrom"
# entries were disabled at the end of the installation process.
# For information about how to configure apt package sources,
# see the sources.list(5) manual.

Debian 10 sources.list - Beispielhaft

Wir schließen mit STRG+X

Wir haben unser System auf dem aktuellen Stand, wir haben alle Pakete gelöscht die wir nicht mehr benötigen, wir haben geprüft ob wir uns auf debian 10 befinden, wir haben ein Backup unserer sources.list datei gemacht.

Öffnet /etc/apt/sources.list im Editor.

sudo nano /etc/apt/sources.list

Eingabe - sources.list in nano öffnen

Ich befreie meine sources.list gerne von den (unnötigen) Kommentaren also schaut meine sources nicht mehr aus wie im Backup oben gezeugt, sondern vorher so:

deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main

deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main

deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main

Hier ersetzen wir jetzt alles was mit "buster" - Debian 10 zu tun hat mit bullseye - Debian 11

💡
Es ändert sich nicht nur buster zu bullseye, die Einträge sehen teilweise doch recht anders aus.
deb http://deb.debian.org/debian bullseye main
deb-src http://deb.debian.org/debian bullseye main

deb http://security.debian.org/ bullseye-security main
deb-src http://security.debian.org/ bullseye-security main

deb http://deb.debian.org/debian bullseye-updates main
deb-src http://deb.debian.org/debian bullseye-updates main

Sind alle Änderungen vorgenommen verlassen wir den Editor und speichern die Datei.

In nano erledigen wir das mit STRG+O, die Nachfrage bestätigen wir mit "ENTER" und schließen mit STRG+X

Wir aktualisieren die Paketlisten - bekommen wir keinen Fehler angezeigt sind unsere Änderungen korrekt.

sudo apt update

Eingabe - Paketquellen aktualisieren

In der Ausgabe achten wir auf "bullseye".

Holen:1 http://deb.debian.org/debian bullseye InRelease [116 kB]
Holen:2 http://security.debian.org bullseye-security InRelease [48,4 kB]
Holen:3 http://deb.debian.org/debian bullseye-updates InRelease [44,1 kB]
Holen:4 http://security.debian.org bullseye-security/main Sources [167 kB]
Holen:5 http://security.debian.org bullseye-security/main amd64 Packages [194 kB]
Holen:6 http://security.debian.org bullseye-security/main Translation-en [123 kB]
Holen:7 http://deb.debian.org/debian bullseye/main Sources [8.633 kB]
Holen:8 http://deb.debian.org/debian bullseye/main amd64 Packages [8.184 kB]
Holen:9 http://deb.debian.org/debian bullseye/main Translation-de_DE [830 B]
Holen:10 http://deb.debian.org/debian bullseye/main Translation-en [6.239 kB]
Holen:11 http://deb.debian.org/debian bullseye/main Translation-de [1.718 kB]
Holen:12 http://deb.debian.org/debian bullseye-updates/main Sources [4.812 B]
Holen:13 http://deb.debian.org/debian bullseye-updates/main amd64 Packages [14,6 kB]
Holen:14 http://deb.debian.org/debian bullseye-updates/main Translation-en [7.929 B]
Es wurden 25,5 MB in 8 s geholt (3.029 kB/s).
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Aktualisierung für 310 Pakete verfügbar. Führen Sie »apt list --upgradable« aus, um sie anzuzeigen.

Keine Fehler, er zeigt in meinem Fall 310 Updates und damit wissen wir, weil vorher alles aktuell war, oder aktualisiert wurde, dass wir die sources.list erfolgreich verändert haben.

Ich benutze an der Stelle gerne "upgrade --with-new-pkgs", da dieser Befehl keine alten Pakete löscht die Programme eventuell noch benötigen.

sudo apt upgrade --with-new-pkgs

Eingabe

Nachdem "apt-listchanges" installiert wurde zeigt es Informationen zu den Paketen an. Wir schließen das Fenster mit "Q".

Wir werden gefragt ob wir Services während der Installation neustarten möchten - ich bestätige das mit Ja. Weiterhin fragt er ob er Konfigurationen beibehalten oder überschreiben soll - Ich wähle "aktuell lokal installierte Version beibehalten".

Es wird sehr viel Ausgabe generiert, so lange wir nicht mit einem Fehler schließen, machen wir weiter.

Jetzt starten wir ein volles Upgrade auf Debian 11.

sudo apt full-upgrade

Eingabe - starten des eigentlich Upgrades

Es öffnet sich wieder apt-listchanges - wir schließen mit "Q"

Ich bekam bei diesem Server nur 2 Rückfragen zu neueren Konfigurationsdateien, das kann deutich mehr werden, wenn man mehr an dem Server verändert hat. Der Standardweg ist die bisherigen Dateien beizubehalten.

Das kann zu problemen führen, also ist es ratsam sich zumindest kurz zu notieren welche Dateien wir nicht übernehmen, um im Falle des Falles prüfen zu können was sich verändert hat.

Wir achten darauf nicht mit einem Fehler zu enden - bei mir war dies der letzte Eintrag in der Ausgabe:

Trigger für dbus (1.12.24-0+deb11u1) werden verarbeitet ...

Letzte Zeile der Ausgabe - Beispielhaft

Ich gehe also von einem Erfolg aus.

Da wir das Betriebsystem verändert haben (und damit sicher auch den Kernel) benötigen wir einen sehr seltenen reboot.

sudo reboot now

Eingabe - System neu starten

Die ssh-Verbindung wird geschlossen und wir warten kurz bevor wir diese neu aufbauen. In einer perfekten Welt ist euer Kaffee getrunken und ihr macht euch einen neuen. Danach bauen wir die ssh-Verbindung neu auf.

ssh USER@HOSTMANE/IP

SSH-Verbindung erneut aufbauen

Prüfen ob wir erfolgreich aktualisiert haben:

lsb_release -a

Eingabe

No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Ausgabe - Bestätigung, dass wir jetzt auf Debian 11 bullseye sind.

Prüfen ob unsere Services laufen wie sie sollen - Beispielhaft:

sudo service apache2 status

Eingabe

Je nach dem ob ihr Apache installiert und laufend hattet sollte der Service auch weiterhin laufen. Bei mir gibt es das nicht, also kann ich das auch nicht prüfen.

Wir entfernen alte Pakete die der Server nicht mehr benötigt.

sudo apt --purge autoremove

Eingabe - Nicht benötigte Pakete automatisch entfernen lassen

Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Die folgenden Pakete werden ENTFERNT:
  bsdmainutils* geoip-database* libbind9-161* libdns1104* libdns1110* libgeoip1* libicu63* libisc1100*
  libisc1105* libisccc161* libisccfg163* liblwres161* libmpdec2* libperl5.28* libpython2-stdlib*
  libpython3.7-minimal* libpython3.7-stdlib* libreadline7* linux-image-4.19.0-16-amd64* python2*
  python2-minimal* python3.7* python3.7-minimal*
0 aktualisiert, 0 neu installiert, 23 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 375 MB Plattenplatz freigegeben.
Möchten Sie fortfahren? [J/n] Y

Ausgabe & Nachfrage ob wir diese Pakete wirklich entfernen wollen.

Wir haben sichergestellt das nicht mehr zu benötigen und bestätigen mit "J" oder "Y".

Wenn ihr euren Server nicht abgesichert habt, beispielsweise keine Firewall installiert habt, oder euer "root" noch immer per SSH Verbinden darf, ist das der perfekte Moment das zu tun.

Wir zeigen euch in der Anleitung für die "Grundinstallation" eines Debian Servers gerne wie wir das machen.

Bei Anmerkungen oder Fragen kommt gerne auf unseren Discord.

Join the IceFlom & maarsellow & Viertelwissen Discord Server!
Gemeinschaftsdiscord von IceFlom, Maarsellow und Viertelwissen

Tags