Skip to content

Instantly share code, notes, and snippets.

@rolfn
Last active July 17, 2023 08:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rolfn/ad3be3e0bfac28148909c1492c147a1a to your computer and use it in GitHub Desktop.
Save rolfn/ad3be3e0bfac28148909c1492c147a1a to your computer and use it in GitHub Desktop.
Hinweise zu Linux

Installieren von Linux (openSUSE)

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.

Sichern der Informationen einer bereits bestehenden Linux-Installation

Ermitteln der installierten Softwarepakete des Rechners mit bewährter Installation

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.

Ermitteln der benutzten Repositorien

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« ).

Ausführen der Neuinstallation auf dem Ziel-Rechner

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.

Nachbearbeitung

Beseitigen aller bisherigen Angaben zu Paket-Repositorien

sudo zypper clean --all
sudo zypper rr --all

Beschaffen der Angaben zu Repositorien und Paketen des Quell-Rechners

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.

Angleichen an die Verhältnisse des Quell-Rechners

Repositorien bekannt machen und aktualisieren

sudo zypper ar standard.repo
sudo zypper ar local.repo
sudo zypper ref

Pakete installieren

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

Upgrade von Linux (openSUSE)

Der folgende Ablauf ist bereits etliche Male erfolgreich beschritten worden. Er erfordert nur wenig Handarbeit, setzt aber ein gut funktionierendes System voraus. Ist Letzteres nicht gegeben, sollte besser eine Neuinstallation erwogen werden. In diesem Artikel wird als Beispiel der Übergang von »openSUSE Leap 15.3« auf »openSUSE Leap 15.4« beschrieben.

Es wird im Folgenden davon ausgegangen, dass die Installationsrepositorien für das System auf Basis der im Artikel »Installieren von Linux« beschrieben Dateien standard.repo und local.repo bekannt gegeben wurden. (Insbesondere ist die konsequente Verwendung der symbolischen Angabe $releasever beim Hinzufügen von Repositorien wichtig.) Sollte dies in der Vergangenheit noch nicht geschehen sein, kann es folgendermaßen nachgeholt werden:

sudo zypper clean --all
sudo zypper rr --all
sudo zypper ar standard.repo
sudo zypper ar local.repo

Repositorien der neuen openSUSE-Version bekannt machen und aktualisieren

sudo zypper --releasever=15.4 ref

(»15.4« ist durch die aktuell zu installierende Version zu ersetzen.)

Hier kann sich in seltenen Fällen herausstellen, dass URLs von Repositorien nicht existieren. Ist dies der Fall, muss das Repositorium der Vorversion im Web-Browser aufgerufen werden und von dieser Adresse ausgehend das nun gültige gesucht werden. Im nächsten Schritt muss die fehlerhafte Angabe in standard.repo bzw. local.repo korrigiert, erneut bereinigt sowie die Repositorien neu angemeldet und aktualisiert werden.

Upgrade

sudo zypper --releasever=15.4 dup --auto-agree-with-licenses --allow-vendor-change --force-resolution

(»15.4« ist durch die aktuell zu installierende Version zu ersetzen.)

Hier kann es in seltenen Fällen passieren, dass Widersprüche auftreten, zu deren Beseitigung Lösungen genannt werden.

Der ergänzende Aufruf

sudo zypper dup --auto-agree-with-licenses --allow-vendor-change --force-resolution

kann nützlich sein, um vielleicht trotz allem vorhandene Inkonsistenzen zu bereinigen.

Um zu testen, ob alle Paketabhängigkeiten erfüllt sind, kann noch folgender Aufruf erfolgen:

sudo zypper ve

Zum Schluss ist das Booten des Rechners notwendig.

RN, 2023-07-17

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment