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).dat
Es entsteht beispielsweise die Datei packages-2022-05-10.dat
, in der alle auf dem Rechner installierten Pakete aufgeführt sind.
zypper lr --export=tmp.repo
Es 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