An jedem Ende einer Produktlebensdauer einer Distribution steht unweigerlich ein Upgrade an. Für manche ist es eine Odyssee und für andere eher eine willkommene Abwechselung. Für manche Neulinge oder schlichte Anwender ist ein Distributionsupgrade ein Graus, da weiß man manchmal nicht, welche Anleitung im Netz am Sinnvollsten ist.
Aus diesem Grund habe ich das Skript upgrade-opensuse.sh entwickelt, dass alle notwendigen Schritte eines Distributionsupgrades automatisch durchführt. Die Vorgehensweise des Skript ist ganz grob an das Upgrade-Tool do-release-upgrade von Ubuntu angelehnt. Wenn alle Pakete von zypper korrekt aufgelöst werden kann, ist es sogar möglich, dass der Upgrade-Prozess in einem Rutsch durchläuft und man am Ende nur noch neustarten muss. Das Skript merkt sich auch die Stelle, an der der Upgrade-Prozess abgebrochen wurde und wird beim erneuten Ausführen an der letzten Stelle fortfahren. So kann man zwischendurch ein Problem beheben und anschließend mit dem Upgrade-Prozess fortfahren.
Folgende Schritte werden durchgeführt:
- Ermittelung der eingesetzten openSUSE-Version.
- Überprüfung der Internetverbindung.
- Ermittelung der neuesten openSUSE-Version oder Verwendung der openSUSE Version aus dem Parameter z.B. -ov 13.1.
- Backup vom /etc Verzeichnis.
- Umbenennung des Verzeichnis der eingebunden Repos /etc/zypp/repos.d nach /etc/zypp/repos.d.upgrade.
- Hinzufügen der Online-Repos (OSS, NON-OSS, OSS Update, NON-OSS Update) von der neuesten openSUSE-Version.
- Upgrade der Distribution via zypper dup (Ohne Community-Repos, um ungewollte VendorChanges zu vermeiden).
- Hinzufügen aller vormals aktivierten Community-Repos einschl. Anpassung an die openSUSE-Version.
- Temporäre Modifizierung der zypper Konfiguration, um VendorChanges zu erlauben.
- Überprüfung von alten openSUSE-Pakete im System. Es wird versucht, die alten Pakete durch neuere Pakete zu ersetzen.
- Die temporäre Modifizierung der zypper Konfiguration wieder durch die Standard-Option ersetzen.
- Alte openSUSE-Pakete, die nicht aktualisiert werden konnten, werden endgültig entfernt.
- Auflistung aller neuen bzw. modifizierten Konfigurationsdateien (*.rpmnew, *rpmsave).
Alle Vorgänge werden protokolliert, um später nachvollziehen zu können, was genau am System verändert wurde.
Folgende selbsterklärenden Logdateien werden erzeugt:
- upgrade-opensuse.zypper-dup-output
- upgrade-opensuse.old-packages-output
- upgrade-opensuse.zypper-reinstall-packages-output
- upgrade-opensuse.remove-old-packages-output
- upgrade-opensuse.zypper-rm-packages-output
- upgrade-opensuse.list-new-and-old-config-files
Wichtiger Hinweis: Vor einem Distributionsupgrade bitte unbedingt ein Backup machen, um im Bedarfsfall auf ein aktuelles Backup zurückgreifen zu können! Außerdem gibt es RPM Pakete von Drittanbietern wie z.B. AMD Catalyst, NVIDIA, VirtualBox, CrossOver, HumbleBundle-Games, usw., die während des Upgrade-Prozess nicht angerührt werden und von Hand aktualisiert werden müssen.
Downloads:
- Skript: upgrade-opensuse.sh
- SHA1: upgrade-opensuse.sh.sha1
Das Skript wird via root ausgeführt und fängt sofort mit der Arbeit an. Es gibt zu Beginn ein Zeitfenster von 5 Sekunden, in der noch ein unkritischer Abbruch mit STRG+C möglich ist.
sudo sh upgrade-opensuse.sh
-h | Die Hilfe anzeigen lassen |
-n/–non-interactive | Keine Fragen stellen, benutze automatisch Standard-Antworten. (zypper Option) |
-ov/–opensuseversion VERSION | Upgrade auf eine gewünschte openSUSE Version (z.B. 13.1 statt 13.2) |
-r/–reset | Beginne das Disributionsupgrade von vorne (Die Option bitte vorsichtig verwenden!) |
-V | Version des Skript anzeigen |
Feedbacks sind wie immer willkommen.
War dieser Artikel für dich hilfreich und/oder konnte dein Problem lösen? Wie wäre es mit einer kleinen Spende (Flattr, Paypal oder Überweisung) für den Erhalt des Blogs und zur Förderung weiterer interessanter Artikel und Skripte? Zudem ist mit jeder Spende gewährleistet, dass der Blog werbefrei ist und auch in Zukunft werbefrei bleiben wird. Ich sage schon mal an alle Spendern herzlichen Dank.