Live-Aktualisierung mit Zypper unter OS 11.x / 12.x

Dieser Artikel beschreibt, wie man unter openSUSE einen Versionssprung zu einer nächsthöheren Distributionsversion durchführt.
Dies funktioniert in den meisten Fällen absolut problemlos (getestet von 11.2 bis 12.2)

Installationsquellen anpassen

Der Einfachheit halber habe ich die bestehenden Repos in eine Datei exportiert und darin die Repos abgeändert (URLs und Aliase). Dann einfach per Zypper alle derzeit eingetragenen Repos löschen und die bearbeitete Liste importieren. Das hat den Vorteil, dass man alle Repos auf einen Rutsch ändern kann und gesetzten Prioritäten gleich behält. Die einzelnen Schritte hierbei sind:

zypper clean

um alle eventuell noch in /var/cache/zypp zwischengespeicherten Repodaten zu löschen

zypper lr -e listealt.repo

um die Liste zu exportieren. Diese Datei dann bearbeiten und unter listeneu.repo (o.ä.) abspeichern

mv /etc/zypp/repos.d/ /etc/zypp/repos.d.bak

um die aktuelle Repoliste zu entfernen (eigentlich wird sie nicht komplett  entfernt, aber durch das Umbenennen hat Zypper keinen Zugriff auf die Repos und ist somit “leer”. Den Ordner /etc/zypp/repos.d.bak kann man  nach dem Upgrade auch löschen).

zypper ar listeneu.repo

Um die neuen Repos hinzuzufügen

zypper mr -rt

Um alle Repos auf autorefresh zu setzen (trotz autorefresh-Eintrag in der Repoliste hat Zypper dies leider nicht übernommen, daher den Befehl noch manuell absetzen).

zypper refresh

Um alle Repodaten zu aktualisieren.


Zypper aktualisieren

Dieser Schritt ist seit 11.2 nicht mehr zwingend notwendig.
(Stand: Update auf 12.1)

Da Zypper und dessen Abhängigkeiten in der Folgeversion selbst aktualisiert wurden , sollte man diese Pakete zu Anfang des Updates aktualisieren:

zypper in zypper libzypp

Dabei werden einige Abhängigkeiten mitinstalliert, je nachdem wie viele Pakete man bereits installiert hat, die auf Zypper zurückgreifen.


Das Upgrade

Die Installation selbst würde ich im Runlevel 3 durchführen. Sie funktioniert zwar auch über die grafische Oberfläche, aber die Gefahr dass durch einen Crash des WM das Upgrade unterbrochen wird, ist gegeben. Also unter X abmelden, über STRG+ALT+F1 auf Konsole wechseln, als Root einloggen und mit init 3 den Runlevel wechseln.

zypper dup --download in-advance

Hierbei werden die zu installierenden (löschenden, tauschenden) Pakete angezeigt, also hier schonmal genau aufpassen und überprüfen ob alles seine Richtigkeit hat. Abhängigkeitskonflikte gab es bei meinen Testinstallationen keine. Wenn alles in Ordnung ist, kann man die Abfrage bestätigen und dann beginnt der Download der Pakete. Die Pakete werden in /var/cache/zypp zwischengespeichert und für die spätere Installation verwendet. Der Vorteil hierbei ist, dass die Installation nicht durch Abbruch der Internetverbindung gestört wird (~1400 Pakete, 1.5 GB, je nach Installation).

Nachtrag: Seit openSUSE 11.3 ist die Option in-advance schon Standard. Also muss man dies nicht explizit angeben. Sollte man aber die alte Vorgehensweise wieder aktiviert haben (jedes Paket direkt nach Download installieren), unbedingt die obige Option verwenden.


Nachbereitung

zypper clean

Um die zuvor geladenen Pakete aus dem Cache zu löschen.

SuSEconfig

Um die Konfiguration neu zu schreiben.

init 6

System neustarten und fertig.

Sind Gerätetreiber oder andere Software zuvor nicht per Paketmanager sondern über Installationsskripte installiert worden (Grafikkarten, Drucker, etc.), gilt es diese natürlich auch wieder manuell nachzuinstallieren!

Es gelten folgenden Bedingungen: Creative Commons Lizenzvertrag
Leave a comment

6 Comments.

  1. Hallo,

    die Anleitung ist an sich gut, aber im Fall des Upgrade von 11.3 nach 12.1 führt sie, wie auch das automatische Upgrade in einen Konflikt, und zwar nach dem Kommando
    zypper in zypper libzypp

    Als Fehlerausgabe kommt
    rpmdb:: page1: illegal page or format
    rpmdb: PANIC Das Argument ist ungültig
    rpmdb: pgin failed for page 1

    Das Problem rührt offenbar von den Formaten der Dateien in der RPM-Datenbank her. Die beim Update installierte rpm-Version von openSUSE 12.1 kann die Datenbankdateien der alten rpm-Version nicht lesen. Das Problem habe ich versucht zu lösen, indem ich diese alte rpm-Version wieder installierte, aber mit ihr will dann zypper nicht kooperieren.

    Viele Grüße
    Markus

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*


Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackbacks and Pingbacks: