SDB:Distribution-Upgrade

Wechseln zu: Navigation, Suche
In dieser Anleitung wird gezeigt, wie man mit Zypper ein Upgrade auf die nächste Version von openSUSE Leap macht.
Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png

Vorbereitung

Warnung!
  • Die wichtigste Vorbereitung bei einem System-Upgrade ist ein Backup der vorhandenen Dateien. Schließlich kann auch bei einem Upgrade mal etwas daneben gehen. Ein Backup kann vor einem eventuellen Datenverlust bewahren!
  • Das System sollte keine offensichtlichen Probleme aufweisen, die sich bei einem Upgrade unter Umständen noch verschlimmern würden.
  • Des Weiteren sollte die installierte openSUSE Version regelmäßig aktualisiert werden, um angebotene sicherheitsrelevante Patches einzuspielen, die auch der Stabilität des Systems dienen.
  • Abhängigkeiten sollten beim Upgrade korrekt aufgelöst werden, um Schäden am System zu vermeiden!

Ein Live-Upgrade auf die nächste Version von openSUSE wird offiziell unterstützt und erlaubt das Upgrade eines kompletten Systems, ohne dass man wieder alles von vorne einrichten muss.

Zusammenfassung

Auf dieser Seite wird erläutert, wie man mit Hilfe des Kommandozeilen-Werkzeugs Zypper openSUSE auf die neueste freigegebene Version aktualisieren kann (Upgrade).

Ein Live-Upgrade kann Vor- aber auch Nachteile haben.

Zu den Vorteilen zählen:

  • Es werden nur die Pakete heruntergeladen, die aktualisiert werden müssen.
  • Während der Aktualisierung kann man den PC weiter nutzen (obwohl es nicht zu empfehlen ist). Die einzige Auszeit ist der Neustart.
  • Es werden keine DVDs oder USB-Sticks für das Upgrade benötigt.

Die Nachteile:

  • Wenn aus irgend einem Grund die Aktualisierung unterbrochen wird (z. B. Stromausfall, Unterbrechung des Netzwerkes) und der Prozess nicht fortgesetzt werden kann, kann das System unbrauchbar werden.
  • Bei mehreren Systemen benötigt man jedes Mal eine große Bandbreite.
  • Es übernimmt nicht die gesamte Bereinigung und Wartung, die ein Offline-DVD-Upgrade macht.

Warnung: Es dürfen bei einem Live-Upgrade keine Versionsnummern übersprungen werden. Beispiel: Bitte kein Upgrade von 42.3 auf 15.1 durchführen. Stattdessen macht man das Upgrade von 42.3 auf 15.0 und dann von 15.0 auf 15.1.

Eine andere Möglichkeit ist das Offline-Upgrade, auch bekannt als traditionelles oder DVD-Upgrade, die sicherer und vielseitiger ist. Ohne triftigen Grund sollte man die Offline-Upgrade-Methode verwenden.

Unterstützte Szenarien

Ein 32-bit openSUSE Upgrade auf Leap wird nicht unterstützt, da Leap nur 64-bit ist.

Auf der AArch64 Architektur (64-bit ARM) wird das Upgrade von Leap 15.0 auf 15.1 nicht unterstützt. Das System muss neu installiert werden.

Dieser Upgrade-Prozess wird grundsätzlich nur als "best effort" betrachtet. Das bedeutet, dass es aufgrund einiger Pakete von Drittanbietern und der Vielzahl möglicher Konfigurationen möglich ist, dass einige Kombinationen beim Upgrade zu Fehlern führen können.

Die wichtigsten Regeln lauten daher:

  • Alle wichtigen Daten müssen vor Beginn des Upgrade-Prozesses gesichert werden.
  • Das System muss mit den neuesten Updates für die Version, die gerade ausführt wird, aktualisiert werden, bevor "zypper dup" gestartet wird.
  • Es darf nur mit "zypper dup" zum nächsten Release gewechselt werden. Das Überspringen eines Releases, z.B. von 42.1 -> 15.1, wird nicht unterstützt.

Upgrade Vorbereitung

Der unterstützte Startpunkt ist die letzte openSUSE-Version mit allen Aktualisierungen. Das gilt nicht für beliebige openSUSE Build Service Repositories, die möglicherweise hinzugefügt wurden. Es wird empfohlen, zuerst alle OBS-Repositories zu deaktivieren, das Upgrade durchzuführen und dann wieder zu aktivieren. Die folgenden Schritte zeigen, wie ein openSUSE Leap aktualisiert wird, bevor auf die nächste Version gesprungen wird.

Kommandozeile

1. Überprüfen ob das Update-Repository schon existiert

zypper repos --uri

In den Spalten mit der Überschrift URI muss die Adresse http://download.opensuse.org/update/leap/15.1/oss/ existieren (ersetzen Sie 15.1 durch die vorhandene Version) und aktiviert sein:

#  | Alias           | Name            | Enabled | Refresh | URI
---+-----------------+-----------------+---------+---------+----------------------------------------------------
1  | repo-update     | repo-update     | Yes     | Yes     | http://download.opensuse.org/update/leap/15.1/oss/

Wenn in der Spalte Enabled der Eintrag auf No steht, muss er mit folgendem Befehl aktiviert werden:

zypper modifyrepo --enable repo-update
Wobei 'repo-update' der Name des Update-Repositorys ist.

2. Das Update-Repository hinzufügen (nur nötig wenn nicht bereits vorhanden)

zypper addrepo --check --refresh --name 'openSUSE-Leap-15.1-Update' http://download.opensuse.org/update/leap/15.1/oss/ repo-update
Ersetze 15.1 durch die aktuelle Version.

3. Verschieben von /var/cache zu einem separaten Subvolume

Notiz: Wenn das root-Dateisystem nicht Btrfs ist, diesen Abschnitt überspringen und weiter zu Schritt 4.

/var/cache beinhaltet viele sehr unbeständige Daten, wie z.B. den Zypper-Cache mit RPM-Paketen in unterschiedlichen Versionen für jedes Update. Als Resultat der Datenspeicherung, was meistens redundant aber auch unbeständige ist, kann die Menge an Festplattenplatz, die ein Snapshot belegt, sehr schnell wachsen.

Um dieses Problem zu beheben wird /var/cache auf ein separates Subvolume verschoben. Bei frischen Installationen von openSUSE Leap wird das automatisch gemacht. Für eine Konvertierung des existierenden root-Dateisystems führt man folgende Schritte durch:

  • Finde den Geräte-Namen (z.B. /dev/sda2 oder /dev/sda3) des root-Dateisystems heraus:
df /
  • Identifiziere das Eltern-Subvolume aller anderen Subvolumes. Für Installationen auf Basis von openSUSE 15.x ist das ein Subvolume mit @ im Namen. Zur Überprüfung, ob es ein Subvolume mit @ haben, verwendet man:
btrfs subvolume list / | grep '@'
  • Wenn die Ausgabe von diesem Befehl leer ist, existiert kein Subvolume mit @ im Namen. In diesem Fall kann man mit der Subvolume-ID 5, die in älteren Versionen von openSUSE verwendet wird, weitermachen.
  • Wenn ein Subvolume mit einem @ im Namen exitiert, wird es in einem temporären Mountpoint gemountet:
mount /dev/<root-device> -o subvol=@ /mnt
Hat man kein Subvolume mit einem @ im Namen haben, mountet man stattdessen die Subvolume-ID 5:
mount /dev/<root-device> -o subvolid=5 /mnt
  • /mnt/var/cache kann schon existieren und es könnte das gleiche Verzeichnis wie /var/cache sein. Um Datenverlust zu vermeiden, kann man es verschieben:
mv /mnt/var/cache /mnt/var/cache.old
  • Dann erstellt man ein neues Subvolume:
btrfs subvol create /mnt/var/cache
  • Wenn jetzt ein Verzeichnis /var/cache.old vorhanden ist, wird es an den neuen Ort verschoben:
mv /var/cache.old/* /mnt/var/cache
Ist das nicht der Fall, gibt man stattdessen folgendes ein:
mv /var/cache/* /mnt/var/cache/
  • Nach dem Verschieben kann man /mnt/var/cache.old entfernen:
rm -rf /mnt/var/cache.old
  • Dann hängt man das Subvolume aus dem temporären Mountpoint aus:
umount /mnt
  • Das neue Subvolume /var/cache erhält einen Eintrag in der /etc/fstab. Man kann dafür das schon vorhandenes Subvolume als Template kopieren. Die UUID muss unberührt bleiben (das ist die UUID des Root-Dateisystems) und der Name vom Subvolume und seinem Mountpoint einheitlich zu /var/cache geändert werden.
  • Das neue Subvolume mus so wie in /etc/fstab festgelegt gemountet werden:
mount /var/cache

4. Update des Systems auf die neuesten Pakete

zypper refresh
zypper update

Weitere Informationen zum Thema Zypper, findet man unter Zypper-Anleitung.

Online-Update mit YaST

Siehe YaST Online Update.

Upgrade ausführen

Die folgenden Schritte werden zeigen, wie man die openSUSE-Distribution auf die nächste Release-Version anhebt (Upgrade) (z.B. 15.0 -> 15.1). Wie bereits erwähnt, können Drittanbieter- oder OBS-Repositories Probleme verursachen, weshalb es empfohlen wird, sie zu deaktivieren oder zu entfernen, bevor man fortfährt.

Vor dem Start

Die aktuelle list of annoying bugs für die neue Version, sollte vor dem Upgrade gelesen worden sein. Einige Fehler können den Aktualisierungsprozess beeinflussen. Normalerweise ist neben dem Fehler eine Lösung oder ein Workaround aufgelistet. So kann man sicherstellen, dass man auf kommende Probleme vorbereitet ist.

Man sollte auch die Release Notes gelesen haben, die Änderungen und Störungen in der neuen Version auflisten.

Kommandozeile

Das folgende Beispiel zeigt das Upgrade von Leap 15.0 auf 15.1.

Wenn ein Alias benötigt wird, kann jede eindeutige ID verwendet werden:

  • Alle Repos, die aktiv sind, auf einmal anzeigen.
    zypper lr
    
    Es sollten alle Drittanbieter und OBS Repos entfernt werden, die nicht länger benötigt werden.
    zypper rr <alias>
    
    Sollte eine Version des Repos auch für die neue Leap-Version existieren, kann man das Repo auch ersteinmal deaktivieren und nach dem Upgrade mit aktualisierter Versionsnummer wieder aktivieren.
    zypper mr --disable <alias>
    
  • Der folgende Befehl legt ein Backup aller existierender Repos an:
    cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.Old
    
    Der nächste Befehl aktualisiert alle Repos von Alt auf Neu. Ändere "15.0", wenn das aktuelle System nicht 15.0 ist:
    sed -i 's/15.0/15.1/g' /etc/zypp/repos.d/*
    
  • Neue Repositories aktualisieren:
    zypper --gpg-auto-import-keys ref
    

Wenn Drittanbieter/OBS-Repositorys nicht entfernt wurden, kann es zu Fehlern kommen, da diese Repositorys möglicherweise noch nicht existieren oder andere URLs haben. Es wird immer empfohlen, sie zu entfernen und ihre neuere Version nach dem Upgrade hinzuzufügen.

  • Jetzt wird das Distributions-Upgrade durchgeführt:
Warnung!Es wird dringend empfohlen, das Upgrade außerhalb des grafischen X-Window-Modus auszuführen. Der Befehl sollte daher entweder von Runlevel 3 (Text + Netzwerk) oder einer virtuellen Konsole aus gestartet werden. Leider ist die WLAN-Verbindung oft nur in Runlevel 5 verfügbar, so dass eine virtuelle Textkonsole am besten ist, wenn man hinter den Kulissen in der Grafikkonsole eingeloggt bleibt. Um auf Runlevel 3 zu wechseln, siehe SDB:Switch_runlevel. Um in Runlevel 5 zu bleiben, aber eine "virtuelle Konsole" zu verwenden, drückt man z.B. Strg-Alt-F1.
zypper dup
Mit dem obigen Befehl lädt Zypper alle erforderlichen Pakete herunter und installiert sie dabei gleich. Um alle Pakete erstmal komplett herunterzuladen und sie dann zu installieren, verwendet man:
zypper dup --download-in-advance
Wenn man das Distributions-Upgrade vor einem offiziellen Release-Datum durchführt hat man möglicherweise einen Release Candidate (RC) oder eine Meilenstein-Version installiert. Dann muss man den letzten Schritt zypper dup wiederholen, um die endgültige Version zu erhalten
  • Nach dem Upgrade kann man nach für die aktuelle Version von openSUSE Leap passende Drittanbieter-Repositories suchen - falls man sie noch benötigt - und sie hinzufügen.
Warnung!Die Verwendung von Repositories von Drittanbietern kann das System beschädigen oder instabil machen.
zypper addrepo --name <name> <url> <alias>
Oder wenn man die URL einer .repo Datei hat:
zypper ar <url.repo>
  • Nach dem Upgrade wird ein Neustart empfohlen, um den neuen Kernel und die neuen Programme zu laden.
Darüber hinaus kann zypper up von Zeit zu Zeit ausgeführt werden, um sicherzustellen, dass die neuesten verfügbaren Pakete aus den verschiedenen aktivierten Repositories installiert werden. YOU (Yast Online Update) adressierst nur Sicherheitsupdates aus den offiziellen Repositories.


Externe Links

Bugs: Upgrade

Aktuell bestehende Bugs und Lösungsansätze sind auf der Seite Most annoying Bugs gelistet. Flagge-Vereinigtes Koenigreich.png

openSUSE Foren