openSUSE – Upgrade der Distribution mit einem Skript

Erst vor kurzem ist die neueste openSUSE-Distribution herausgekommen und nun will man die Distribution via „zypper dup“ upgraden. Die meisten openSUSE-User müssen erstmal nach einer Anleitung im Internet suchen und diese dann Schritt für Schritt durchgehen. Das kann eine einfache oder auch eine komplizierte Angelegenheit werden.

Aus diesem Grund habe ich ein 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.
  • 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.
  • 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.
  • Rückgangig machen der temporäre Modifizierung der zypper Konfiguration.
  • 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 nachzuvollziehen, 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 z.B. 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)
-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.

16 thoughts on “openSUSE – Upgrade der Distribution mit einem Skript

  1. Hallo Sebastian.

    Durch den Wechsel von AMD zu NVIDIA war bin ich leider (oder zum Glück) nicht mehr so häufig auf deiner Seite.
    Da du bislang die einzig verlässliche Quelle warst, auf die ich beim Thema „Linux“ zurückgreifen konnte, wende ich mich mit meinem aktuellen Problem mal wieder an dich.

    Aufgrund der versprochenen Evergreen-Unterstützung habe ich den Wechsel auf 13.1 gewagt. Bislang lief alles ausgezeichnet, jedoch macht seit gestern der Akonadiserver (KDE) mucken. Bislang kann ich den Fehler leider nicht greifen. Mal funktioniert nach dem Systemstart alles reibungslos und dann wieder nicht. Als Fehlermeldung wird immer angezeigt, dass D-Bus nicht gefunden wird. (Was auch immer das heißen mag?)

    Da ich beruflich doch ziemlich auf ein funktionierendes Kontact-System (Adressen, Mail, Kalender) angewiesen bin, ist dieser Umstand schon sehr, sehr ärgerlich.

    Falls du per Zufall mal auf das gleiche Problem stoßen solltest, dann denk doch mal an mich.

    Gruß Hennes

    • Hallo Hennes,

      ich habe mich schon gefragt, wo du steckst und mir schon in dieser Richtung gedacht, dass du ein Abstecher in das andere Lager machst. :-)

      Zu deinem merkwürdigen D-Bus-Fehler:
      Leider kann ich dir in Sachen Akonadi-Server in Zusammenhang mit D-BUS und KDEPIM noch nicht näheres dazu sagen. Wahrscheinlich ist der D-BUS beim Start des Systems einfach zu langsam und KDE bzw. die KDEPIM-Suite greift da zu früh darauf zu. Ein Bugreport (#848619) habe ich soeben auch schon gefunden. Am Besten hänge dich da einfach mal an die Diskussion dran, dann richtet sich der Fokus der KDE-Maintainer auf diesen Bug.

      Auf meinem Notebook Lenovo Thinkpad X121e habe ich auch schon auf openSUSE 13.1 aktualisiert und konnte das beschriebene Verhalten nicht nachvollziehen.

      Gruß

      Sebastian

    • Hi Hennes,

      wenn Du ein upgrade gemacht hast, dann würde ich erst einmal checken, ob nicht noch Sachen von alten Repos vorhanden sind, die da Probleme machen. (Muss hier leider aus eigener Erfahrung spechen ;) )
      Die Probleme mit Akonadi hatte ich beim Wechsel von 4.9. Evtl. fällt da auch die Dateiindexierung durch Nepomuk mit rein. Bei mir hat die Neuerstellung der Ressourcen (mail, Kontakte etc.) geholfen, die aber 1-2 Stunden dauern kann, kommt natürlich auf Deine Datenmenge an.

      PS: Ein Backup des ~/.kde4 kann aber nicht schaden :)

      cu sysitos

  2. Hallo Sebastian!

    Nach Durchsicht deines Skripts ist mir aufgefallen, dass du die /etc/SuSE-release Datei nach der Version abfragst. Diese gilt allerdings seit 13.1 als „deprecated“ und wird irgendwann entfernt.
    Solltest du das Skript (ähnlich zu deinem ATI/AMD-Treiber Skript) länger warten wollen, empfehle ich die Datei /etc/os-release zu verwenden. Diese exisitiert seit openSUSE 12.1 im System.

    lg, Michi

    • Hallo Michael,

      da sieht man, dass das Mehr-Augen-Prinzip bestens funktioniert. :-)

      Du hast recht, dass die Versionsdatei /etc/SuSE-release als veraltet gilt. Da habe ich leider nicht mehr daran gedacht, im Skript diese Passage zu erneuern. :-? Ich würde aber auch nicht sofort auf die /etc/os-release stürzen. Stattdessen verwende ich lieber wie auch im makerpm-amd-Skript das Tool lsb-release. Auf diese kann man sich unabhängig vom Namen der Versionsdatei immer darauf verlassen. Soeben habe ich ein Update vom Skript hochgeladen und sollte das Skript zukunftssicher machen. ;-)

      Danke schön für das Reviewing. Bitte mehr davon!

      Gruß

      Sebastian

  3. Hallo Sebastian,

    was mir jetzt schon zweimal negativ aufgefallen ist bei dem Upgrade ist, dass man nachträglich grub2-install /dev/sdX nochmal laufen lassen muss, weil irgendwelche graphic Pakete fehlen. Man endet dann mit einem nicht ladenden Grub. Ansonsten funktioniert das echt gut.

    Grüße Peter

  4. Bei mir hat das Skript leider nicht so gut funktioniert :-(
    In meinem 12.3 64bit sind 3 Repos, die wohl nicht aktualisiert werden können:
    KDE:Release:410
    devel:tools:ide
    download.opensuse.org-UpdatedApps

    Zu jedem der Repos erscheint dann:
    Datei ‚/repodata/repomd.xml‘ nicht auf dem Medium ‚http://download.opensuse.org/repositories/KDE:/UpdatedApps/openSUSE_13.1/‘ gefunden.
    Abbrechen, wiederholen, ignorieren? [a/w/i/? zeigt alle Optionen] (a): i

    Und wenig später bricht das Script ab:
    Error: zypper could not refresh the repository cache!

    Ich habe dann manuell mit yast und dann auch mit zypper die 3 Repos entfernt. Beim Neustart des Skripts sind die aber wieder da und sorgen für einen Abbruch an der bekannten Stelle. Ich werde jetzt wohl mit „zypper dup“ mein Glück versuchen…

    • Hallo Michael,

      ja, dass ist die kleine Gefahr dabei. Wenn für openSUSE 13.1 einige Repos mit der Umstellung noch nicht so weit sind bzw. die Umstellung keinen Sinn macht. z.B. KDE 4.10 wäre auf openSUSE 13.1 quasi ein Downgrade. Da muss man hier schon prüfen, ob das eine oder andere Repo existiert bzw. diese dann rauswirft.

      Gruß

      Sebastian

  5. Hallo

    Skript funktioniert auch hier leider nicht.

    Check for running this script as root … [ OK ]
    Add new openSUSE standard repositories …
    Ausführlichkeitsgrad: 1
    Achtung: ‚–gpg-auto-import-keys‘ aktiviert. Neue Repository-Signierungsschlüssel werden automatisch importiert!
    Programmargumente, die keine Optionen sind: ‚http://download.opensuse.org/distribution//repo/oss/‘ ‚openSUSE OSS‘
    Ziel wird initialisiert
    Repository ‚openSUSE OSS‘ wird hinzugefügt …………………………………………………………………………………………….[fertig]
    Ein gültiges Repository konnte an dem gegebenen Ort nicht gefunden werden:
    [|] Repository type can’t be determined.
    Der Typ des Repositories konnte nicht festgestellt werden. Bitte überprüfen Sie, ob die definierten URIs (siehe unten) auf ein gültiges Repository verweisen:http://download.opensuse.org/distribution//repo/oss/

    Error: zypper could not add the standard repository! [openSUSE OSS] [ FAILURE ]

    MFG bashy

  6. Hallo Sebastian,

    vlt. weisst du es ja schon und es gibt schon eine neue version(?), aber falls nicht: das hier angebotene script kommt mit dem neuen format im repo contet file beim holen der neuen version nicht klar
    „DISTRO cpe:/o:opensuse:opensuse:13.2,openSUSE“
    wird jetzt verwendet statt
    „VERSION 13.1“
    nach nem dirty fix war es mir wie gewohnt ohne probleme möglich eine 13.1 installation auf 13.2 zu hiefen!
    gratulation und vielen dank für das schöne script!

    MM

      • Hallo Sebastian,

        zunächst einmal vielen Dank für die Arbeit die du in dieses Skript und noch viel mehr natürlich in den ATI-Support steckst!! Bin selber SW-Entwickler/Tester und kann mir den Aufwand, den du betreiben muss, sehr gut vorstellen.

        Gibt es eigentlich eine aktualisierte Version des Upgrade-Skripts für 13.2?
        Wenn ich ehrlich bin, habe keine wirkliche Lust alles zu Fuß zu machen.
        War beim letzten Upgrade super bequem. 8)
        Konnte das Skript starten und nach x Kaffee/Filmen das erfolgreiche Upgrade „empfangen“.

        Vielen Dank schon mal im voraus
        Kalle

Die Kommentarfunktion ist geschlossen.