openSUSE – Upgrade der Distribution per Skript [Skript-Update]

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:

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.

7 thoughts on “openSUSE – Upgrade der Distribution per Skript [Skript-Update]

  1. Vielen Dank für das Script. Wenn du den Artikel auch auf Englisch veröffentlichen könntest, würdest du sicher noch viel mehr Leute damit erreichen. Falls du dabei Hilfe benötigst, kannst du dich gerne an mich wenden.

    • Hallo Marcus,

      danke für dein Feedback. Es gibt bereits Überlegungen meinerseits den Artikel zusätzlich auch auf Englisch zu veröffentlichen. Dazu werde ich mehrere Wege prüfen. Entweder als Teil des originalen Artikel oder eine Übersetzung in lizards.opensuse.org zu veröffentlichen.

      Gruß

      Sebastian

  2. Die Beschreibung liest sich vielversprechend. Diesmal noch nicht, da 13.2 schon drin war. Für das nächste Mal habe ich noch eine Frage:

    Ist das Skript

    – speziell für 13.1 -> 13.2
    – allgemein für die nächste Version bei beliebiger Ausgangslage: n -> n + 1
    – ganz allgemein, beliebige Ausgangslage, auch über _mehrere_ Versionen hinweg?

    Dankbar

    A. Mehl

    • Hallo Albrecht,

      auf meinem Heimrechner habe ich mit diesem Skript auf openSUSE 13.2 gehoben. Auf meinem Arbeitsrechner habe ich jedoch erst auf openSUSE 13.1 mittels Parameter -ov 13.1 gehoben. Es hat bisher einwandfrei funktioniert. Danach musste ich wie bei jedem Distributionsupgrade auch etwas nacharbeiten und einige Konfigurationen anpassen. Die Liste der Konfigurationsänderungen wird ja gleich vom Skript mitgeliefert. :-)

      Wenn sich die Konstellation für die kommende openSUSE Version nicht ändert, dann kannst du das Skript auch beim nächsten Upgrade verwenden. Ansonsten werde ich das Skript aktualisieren, wenn es nicht mehr funktionieren sollte.

      Gruß

      Sebastian

  3. Leider ist bei mir mit dem Skript beim Upgrade von 13.1 auf 13.2 etwas schrecklich schief gegangen, obwohl es scheinbar ohne Probleme durchlief. Nach dem Neustart war GRUB2 quasi unsichtbar (irgendetwas zwischen Text- und Grafikmodus), bei Bestätigung mit Enter kam dann eine Kernel-Fehlermeldung: „error: premature end of file“.

    Wie ich es lösen konnte, ohne neu zu installieren:

    1) openSuse 13.2 als KDE-Version heruntergeladen und auf USB-Stick kopiert (auf einem anderen Rechner)
    2) nach Start von USB-Stick am Rechner mit dem Kernel-Fehler mit CTRL-ALT-F1 auf die Konsole
    3) su
    4) fdisk -l, um herauszufinden, welche Festplatte die Boot-Festplatte meines Rechners ist
    5) mount /dev/sdX /mnt (X durch den passenden Festplattenbuchstaben ersetzen)
    5a) mount /dev/sdY /mnt/boot (wenn /boot auf einer extra Partition liegt, optional)
    6) mount –bind /dev /mnt/dev
    7) chroot /mnt
    8) zypper in -f kernel-desktop
    9) grub2-install /dev/sda
    10) reboot

    Nach dem Neustart klappte das Starten von der Festplatte wieder :)

    Es gab dann noch Probleme mit der grafischen Darstellung nach GRUB2, die ich mit
    sudo plymouth-set-default-theme -R openSUSE
    lösen konnte.

    Hoffe, es hilft, falls jemand in dieselbe Situation gerät.

    Gruß

    Alexander

Die Kommentarfunktion ist geschlossen.