openSUSE: Upgrade zu neuer Version mit Zypper
Wie mache ich ein Upgrade auf eine neue Betriebssystem-Version auf der Kommando-Zeile bei openSUSE? Mit Zypper!
Desktop oder Server? Egal!
Gerade eben sah ich mich einmal genötigt, meinen Server mal von der Version openSUSE 15.0 auf die Version 15.1 hochzurüsten.
Das klingt unspektakulär, ermöglicht aber doch die Nutzung neuerer Bibliotheken und Programme als in der Vorgängerversion und gilt damit natürlich auch allgemein sicherer als die alte Version.
Es ist bei dem Weg über die Kommandozeile noch nicht einmal notwendig irgendein Installationsmedium zu erstellen oder zu benutzen und Konfigurationen bleibe auch erhalten, was ein wirklich großer Vorteil ist.
Mit den Upgrade via Installationsmedium ist es mir auch tatsächlich noch nie wirklich gelungen, ein Upgrade so perfekt durch zu führen das am Ende nach einem Reboot alles weiterhin funzt.
Mit Zypper gelingt das schon ohne eigenes Zutun.
Es ist dabei auch egal, ob es sich, wie in meinem Fall, um einen Server weit weg von Berlin handelt oder einem lokalen Desktop-PC.
Vorbereitung
Ein paar Vorbereitungen bedarf es aber schon:
Loggt euch auch eine Konsole eurer Wahl als root ein oder macht euch dort zum selbigen, denn alles was im Rahmen des Upgrades passiert braucht Admin-Rechte.
Zuerst einmal sollte das bestehende System, bei mir also ein openSUSE 15.0 so aktuell wie möglich sein, um den Wechselschritt so klein wie möglich zu halten.
zypper ref
Erst einmal mit dem obigen Befehl die vorhandenen Repos aktualisieren und dann so oft es nötig ist dem folgenden Befehl folgen, bis am Ende eine freundliches „Nothing to do.“ auf der Konsole erscheint:
zypper up
Jetzt können wir uns um die erforderliche Änderung der Repos kümmern:
Dazu müssen wir die vorhandenen Repositories erst einmal in eine Datei exportieren, deren Endung unbedingt „.repo“ lauten muss, damit wir sie hinterher wieder importieren können.
Das passiert so:
zypper lr -e /pfad/zu/meiner/datei.repo
Nun müssen wir die entstandene Datei mit vim oder einem anderen Tool deiner Wahl bearbeiten.
Sie enthält mehrere Einträge, die in etwa so aussehen wieder folgende:
[openSUSE 15.0_OSS]
name=openSUSE 15.0-OSS
enabled=1
autorefresh=1
baseurl=http://download.opensuse.org/distribution/leap/15.0/repo/oss/
path=/
type=rpm-md
keeppackages=0
Dazu gibt es, je nach dem was du so zusätzlich installiert hast, Einträge wie z.B. diesen, bei dem du selber recherchieren musst, welche aktuellere Version zu benutzen ist:
[MariaDB]
enabled=1
autorefresh=0
baseurl=http://yum.mariadb.org/10.1/opensuse/15/x86_64
type=rpm-md
gpgcheck=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Für alle Fälle in denen so etwas wie openSUSE und oder die alte Versionnummer vorkommt ist die Änderung denkbar einfach:
[openSUSE-15.1-Update_OSS]
name=openSUSE 15.1-Update-OSS
enabled=1
autorefresh=1
baseurl=http://download.opensuse.org/update/leap/15.1/oss/
path=/
type=rpm-md
keeppackages=0
Genau: Aus allen Einträgen „15.0“ machen wir einfach „15.1“. 🙂
Im Falle des zweiten Eintrags habe ich auf der Seite des Repositories nachgesehen und herausgefunden, dass die aktuelle, stabile Version „10.4“ heißt und habe auch das einfach eingetragen:
[MariaDB]
enabled=1
autorefresh=0
baseurl=http://yum.mariadb.org/10.4/opensuse/15/x86_64
type=rpm-md
gpgcheck=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
Anmerkung: MariaDB ist natürlich auch längst in den openSUSE-Repos enthalten und die Standard-Datenbank der Distribution.
Es besteht für den Normal-User keine Notwendigkeit dieses Repo einzubinden, es sei denn man arbeitet wie ich selbst professionell im Beruf mit einer MariaDB, denn die Version der aktuellen Distribution ist nur 10.2 statt 10.4, was dem Profi tatsächlich auffällt… 😉
Sofern alle Änderungen gemacht sind, die Datei einfach speichern.
Los geht’s!
Damit das jetzt alles wirksam wird, müssen wir nun die alten Repository-Einträge löschen.
Dazu lässt man sich mit folgendem Befehl alle Repos einmal auflisten (man kann dabei gleich noch mal nachschauen, ob man was vergessen hat):
zypper lr
In meinem Fall gibt es 6 Repositories in der angezeigten Liste, die nun alle gelöscht werden:
zypper rr 1 2 3 4 5 6
Jetzt können wir die neuen Repos aus unserer editierten Datei einspielen:
zyper ar /pfad/zu/meiner/datei.repo
Möglicherweise fragt euch das System nun, ob ihr den neuesten Schlüssel von Repo XY akzeptieren wollt oder ähnliches. Ihr beantwortet das natürlich ganz in eurem Sinne.
Ein paar mehr Rückfragen und Bestätigungen werden euch dann noch abverlangt, wenn ihr nun, am Start des Upgrades angekommen seid und nach reiflicher, letzter Überlegung ob ihr das tun wollt, folgendes eintippt:
zypper dup
Das System fragt nun unter anderem ab, ob ihr das wirklich wollt, zeigt euch an, was geändert wird und fragt im einzelnen noch aufgetretene Probleme ab.
Meistens handelt es sich dabei um einen Wechsel des Anbieters von AB zu XY, was ihr im Regelfall einfach bestätigen könnt. Das kommt häufiger vor.
Nachdem ihr alle Fragen abgehakt habt und noch immer sicher seid, das ihr es wollt, geht es mit einem einfachen yes los und der Prozess rollt ab.
Am Ende werdet ihr gefragt, ob ihr die Skripte XY und Z installieren wollte, es gäbe da Konflikte zu den bestehenden Dateien, was ihr bitte bestätigt.
Natürlich gibt es Unterschiede zwischen ihnen, denn diese Version ist neuer, wird aber erst nach dem Reboot auch verwendet.
Genau das sollte dann auch der letzte Befehl sein:
reboot
Abschluss
Wenn die Maschine nun wieder hochgefahren ist, sollte euch beim Desktop ein neues System entgegen lächeln, oder der Server schlicht wie immer laufen.
Auf einem Server sollte man dann einfach auch mal gucken ob z.B. die Datenbank oder/und der Webserver auch laufen:
service mariadb status
service apache2 status
Falls nicht, dann halt:
service mariadb start
serive apache2 start
… und fertig ist alles 🙂
Wem das alles chinesisch vorkommt oder nicht weiß, wie er aus vim wieder hinaus kommt, der sollte es auch lassen…
Die Beschreibung richtet sich an jene mit genug Erfahrung für diesen Prozess und ich übernehme natürlich auch keine Gewähr für den Erfolg.