Hier wird ein relativ schnell und einfach zu realisierender Ablauf gezeigt. Er basiert darauf, dass bereits auf einem anderen Rechner eine Linux-Installation vorhanden ist, die im Umfang identisch oder sehr ähnlich zu der geplanten ist und als Vorbild dienen soll. Eine Anwendung könnte die künftige Nutzung neuer Rechner-Hardware sein.
sudo zypper ref ; zypper up -l
rpm -qa --queryformat '%{NAME}\n'| sort -fu > packages-$(date +%Y-%m-%d).datEs entsteht beispielsweise die Datei packages-2022-05-10.dat, in der alle auf dem Rechner installierten Pakete aufgeführt sind.
zypper lr --export=tmp.repoEs empfielt sich nun im Interesse einer besseren Übersichtlichkeit, den Inhalt
von tmp.repo in zwei getrennte Dateien aufzuteilen:
standard.repo
local.repo
Mit Stand 2022-05-10 sollte standard.repo folgenden universellen Inhalt haben:
[repo-oss]
name=Haupt-Repository
enabled=1
autorefresh=0
baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/oss/
path=/
type=rpm-md
keeppackages=0
[repo-non-oss]
name=Non-OSS Repository
enabled=1
autorefresh=0
baseurl=http://download.opensuse.org/distribution/leap/$releasever/repo/non-oss/
path=/
type=rpm-md
keeppackages=0
[repo-update]
name=Hauptaktualisierungs-Repository
enabled=1
autorefresh=0
baseurl=http://download.opensuse.org/update/leap/$releasever/oss
path=/
type=rpm-md
keeppackages=0
[repo-update-non-oss]
name=Aktualisierungs-Repository (Nicht-Open-Source-Software)
enabled=1
autorefresh=1
baseurl=http://download.opensuse.org/update/leap/$releasever/non-oss/
path=/
type=rpm-md
keeppackages=0
[repo-backports-update]
name=Update repository of openSUSE Backports
enabled=1
autorefresh=0
baseurl=http://download.opensuse.org/update/leap/$releasever/backports/
path=/
type=rpm-md
keeppackages=0
[repo-sle-update]
name=Update repository with updates from SUSE Linux Enterprise 15
enabled=1
autorefresh=0
baseurl=http://download.opensuse.org/update/leap/$releasever/sle/
path=/
type=rpm-md
keeppackages=0
[packman]
name=Packman repository
enabled=1
autorefresh=0
baseurl=https://ftp.fau.de/packman/suse/openSUSE_Leap_$releasever/
type=rpm-md
priority=50
gpgcheck=1
gpgkey=https://ftp.fau.de/packman/suse/openSUSE_Leap_$releasever/repodata/repomd.xml.key
keeppackages=0
Die Datei local.repo sollte alle Einträge aus tmp.repo enthalten, die nicht
schon mit standard.repo erfasst wurden. Einträge, die DVD- oder
USB-Installationsmedien betreffen, können entfallen. Folgender Inhalt mag als
Beispiel für local.repo dienen:
[Virtualization]
name=Virtualization (openSUSE_Leap_$releasever)
enabled=0
autorefresh=0
priority=50
baseurl=http://download.opensuse.org/repositories/Virtualization/openSUSE_Leap_$releasever/
type=rpm-md
gpgcheck=1
gpgkey=http://download.opensuse.org/repositories/Virtualization/openSUSE_Leap_$releasever/repodata/repomd.xml.key
Für die zusätzlichen Repositorien in local.repo ist oft die Angabe einer
Priorität sinnvoll. Ohne Angabe gilt der Wert 99. Repositorien, deren
sämtliche Pakete potenziell gewünscht sind, sollten eine höhere Priorität (z.B.
priority=50) bekommen. Repositorien, die zwar ein speziell gewünschtes und
nur dort vorhandenes Paket enthalten, aber darüber hinaus noch andere
unerwünschte Paketversionen, sollten eine geringere Priorität (z.B.
priority=120) bekommen.
Weiterhin ist darauf zu achten, dass sämtliche ggf. vorhandenen expliziten
Angaben zur Betriebssystemversion (z.B. 15.3) durch die symbolische Angabe
$releasever ersetzt werden, wie bereits in standard.repo zu sehen ist.
Dadurch wird ein Betriebssystem-Upgrade erleichtert (siehe »Upgrade von
Linux« ).
Dies sollte nach dem üblichen Ablauf per DVD oder USB-Stick erfolgen. Hier folgen einige ergänzende Hinweise:
- Es sollte bereits ganz zu Anfang die Sprache Deutsch gewählt werden.
- Um den Umfang gering zu halten, kann man sich auf das »minimale grafische System« beschränken, da ohnehin alle fehlenden Pakete später zusätzlich installiert werden.
- Start des ssh-Dämons, um frühzeitig auf den Rechner zugreifen zu können.
Beseitigen aller bisherigen Angaben zu Paket-Repositorien
sudo zypper clean --all
sudo zypper rr --all
Die vorher auf dem Quell-Rechner erzeugte Liste der Pakete sowie die Listen der Repositorien (standard.repo und local.repo) sind zu dem Ziel-Rechner zu transferieren.
sudo zypper ar standard.repo
sudo zypper ar local.repo
sudo zypper ref
sudo zypper in --auto-agree-with-licenses --force-resolution --replacefiles $(cat packages-2022-05-10.dat)
Hiermit werden alle auf dem Quell-Rechner installierten Pakete auch auf dem Ziel-Rechner installiert. Alle Updates sind inbegriffen und auch der Umstand, dass manche Programme bevorzugt von einem bestimmten Repositorium bezogen werden sollen, wird berücksichtigt.
Der ergänzende Aufruf
zypper dup --auto-agree-with-licenses --allow-vendor-change --force-resolution
kann nützlich sein, um vielleicht trotz allem vorhandene Inkonsistenzen zu bereinigen.
Um sicher zu gehen, dass alle Paketabhängigkeiten erfüllt sind, kann der folgende Aufruf erfolgen:
sudo zypper ve
Zum Schluss ist das Booten des Ziel-Rechners notwendig.
RN, 2022-05-22