SDB:Distribution-Upgrade
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
![]() |
|
![]() |
![]() |
Inhaltsverzeichnis
Wichtige Anmerkungen
Achtung: die Anleitung hier ist veraltet. Bitte die Anmerkungen auf der Seite "Diskussion" beachten!
Vorbereitung
- 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.
Ein Upgrade mit Zypper wird Live-Upgrade oder Online-Upgrade genannt, und hat folgende Vor- und Nachteile:
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, welches sicherer und vielseitiger ist. Im Allgemeinen wird das Offline-Upgrade empfohlen. Wer seine Einstellungen behalten möchte und ein Backup gemacht hat, kann aber auch die Online-Variante wählen.
Unterstützte Szenarien
Wie erwähnt werden Versionssprünge (15.1 => 15.3) nicht unterstützt. Aus diesem Grund ist auch das Upgrade einer sehr alten 32-bit-Version auf Leap (64 bit) nicht möglich. Alte Versionen sollten generell neu installiert werden. Die eigenen Daten können danach selbstverständlich auf das neue System kopiert werden, die Systemeinstellungen sollte man erneut konfigurieren. (Bei der Gelegenheit entdeckt man auch viele nützliche Einstellungen, die man vorher nicht kannte ;-) ).
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.
Im Prinzip wird ein Live-Upgrade nur als "best effort" betrachtet. Das bedeutet, dass es aufgrund einiger Pakete von Drittanbietern und der Vielzahl möglicher Konfigurationen sein kann, dass einige dieser Kombinationen beim Upgrade zu Fehlern führen.
Die wichtigsten Regeln lauten daher:
- Alle wichtigen Daten müssen vor Beginn des Upgrade-Prozesses gesichert werden.
- Das bisher installierte System muss vor dem Upgrade noch einmal mit den neuesten Updates aktualisiert werden.
- Es darf mit "zypper dup" nur 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. Bisher galt das nicht für openSUSE Build Service Repositories, die möglicherweise hinzugefügt wurden. Mittlerweile (mit dem Stand von openSUSE 15.3) kommt zypper besser damit zurecht, sodass man alle Repositories (die von openSUSE und selbst hinzugefügte wie Packman) in einem Schritt auf die neue Version umstellen kann.
Vorher sollte aber geschaut werden, ob wirklich noch alle extra Repositories nötig sind. Wenn bestimmte Programme nicht mehr gebraucht werden, oder die Grundinstallation von openSUSE inzwischen auf einem ausreichend aktuellen Stand ist, sollte das Dritt-Repository gelöscht werden. Das gilt speziell für HOME-Repositories.
- Alle aktiven Repos anzeigen:Es sollten alle Drittanbieter und OBS Repos entfernt werden, die nicht länger benötigt werden:
zypper lr
zypper rr <alias>
Bei jedem gelöschten Repo(sitory) fragt zypper, was mit den installierten Paketen passieren soll: dann auf die Standard-Version von openSUSE upgraden.
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 mr --enable repo-update
- Wobei 'repo-update' der Name des Update-Repositories ist.
Wenn das Repo schon existierte und aktiviert war, bitte mit Schritt 3 weitermachen.
2. Das Update-Repository hinzufügen (wenn noch nicht 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.
openSUSE 15.3 fügt übrigens zwei weitere Update-Repositories hinzu: eines für Backports (Rückportierungen) und eines für Pakete aus SUSE Linux Enterprise.
3. Verschieben von /var/cache zu einem separaten Subvolume
/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ändig 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 bisherigen Systems auf die neuesten Pakete
zypper refresh
zypper update
Weitere Informationen zum Thema Zypper, finden Sie in der 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.2 -> 15.3).
Wenn Sie bisher openSUSE 15.1 oder älter einsetzen, können Drittanbieter- oder OBS-Repositories Probleme verursachen, weshalb es empfohlen wird, sie zu deaktivieren oder zu entfernen, bevor man fortfährt. Ab openSUSE 15.2 (oder neuer) gilt dieser Hinweis nicht mehr!
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 in der neuen Version auflisten.
Kommandozeile
Das folgende Beispiel zeigt das Upgrade von Leap 15.2 auf 15.3.
Wenn im Folgenden ein Alias benötigt wird, kann jede eindeutige ID verwendet werden (Zahl, Name, ...).
5. Repositories updaten
Der folgende Befehl legt ein Backup aller Repos an:cp -Rv /etc/zypp/repos.d /etc/zypp/repos.d.old
Der nächste Befehl stellt die Repos auf die neue Version um (auch hier entsprechend die Versionen einsetzen):
sudo sed -i 's/15.2/15.3/g' /etc/zypp/repos.d/*.repo
6. Alle Repositories auf die neue Version aktualisieren
zypper --gpg-auto-import-keys ref
Achte hier auf Fehlermeldungen. Vielleicht hat sich ein Pfad geändert, den Du mit dem Browser heraus finden kannst (eine Ebene höher springen, bis wieder Verzeichnisse angezeigt werden). Anderenfalls ist es besser, das Repository jetzt zu deaktivieren oder zu löschen.
7. Distributions-Upgrade durchführen
zypper dup --download-in-advance
Um gleichzeitig Pakete herunterzuladen und zu installieren (was schneller geht), verwendet man:
zypper dup
(zypper dup)
wiederholen, um die endgültige Version zu erhalten8. Neustart
Nach dem Upgrade wird ein Neustart empfohlen, um den neuen Kernel und die neuen Programme zu laden.
9. Extra Repositories
Falls Du oben Drittanbieter-Repositories deaktiviert oder gelöscht hast, kannst Du sie jetzt wieder hinzufügen (sofern noch benötigt):
zypper addrepo --name <name> <url> <alias>
zypper ar <url.repo>
Anschließend
Enjoy the new system ;-)
Externe Links
Bugs: Upgrade
Aktuell bestehende Bugs und Lösungsansätze sind auf der Seite Most annoying Bugs gelistet.
openSUSE Foren
- Themen, die mit zypper dup oder upgrade verbunden sind.