Systemupgrade: Unterschied zwischen den Versionen
(75 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | == | + | == Suse Systemupgrade - Schritt für Schritt == |
− | + | Eine Terminal (Konsole) Sitzung als Benutzer '''root''' starten. | |
+ | * Die folgende Anleitung muss zwingend von oben nach unten dirchgearbeitet werden. | ||
+ | * Den Code von jedem Abschnitt kopieren und dann gleich im Terminal ausführen. | ||
+ | * Die Reihenfolge muss eingehalten werden, da Variable gesetzt werden, die in nachfolgenden Schritten verwendet werden. | ||
+ | * Alles muss im selben Terminal (Konsole) Fenster durchgeführt werden | ||
+ | |||
=== Version === | === Version === | ||
− | + | Die neue Versionsnummer wird in der Variablen <tt>$new</tt> abgelegt. | |
old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'` | old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'` | ||
− | + | main=$(echo $old | cut -d "." -f 1) | |
− | + | sub=$(echo $old | cut -d "." -f 2) | |
− | + | new=$main.$(expr $sub + 1) | |
− | + | echo $new | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | === | + | === Repos modifizieren === |
− | + | Dieser Schritt korrigiert Repositories, wenn nötig. | |
− | + | # Hardcodierte Versionsnummern durch die Variable <tt>$releasever</tt> ersetzen | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | # | ||
rm /etc/zypp/repos.d.bak -R 2> /dev/null | rm /etc/zypp/repos.d.bak -R 2> /dev/null | ||
cp -a /etc/zypp/repos.d /etc/zypp/repos.d.bak | cp -a /etc/zypp/repos.d /etc/zypp/repos.d.bak | ||
cd /etc/zypp/repos.d | cd /etc/zypp/repos.d | ||
find . -type f | \ | find . -type f | \ | ||
− | + | while read file ; do | |
− | |||
# Suchen und ersetzen: | # Suchen und ersetzen: | ||
cp "$file" datei.tmp | cp "$file" datei.tmp | ||
sed -e s/$old/\$releasever/g datei.tmp > "$file" | sed -e s/$old/\$releasever/g datei.tmp > "$file" | ||
− | + | done | |
rm datei.tmp | rm datei.tmp | ||
− | + | ||
− | + | # Versionsname aus repo-Dateinamen entfernen | |
− | # Versionsname aus | ||
for file in * ; do | for file in * ; do | ||
oldname=`basename "$file"` | oldname=`basename "$file"` | ||
− | + | newname=`echo $oldname | sed -e s/$old/""/` | |
− | if [ "$newname" != "$oldname" ] | + | if [ "$newname" != "$oldname" ] ; then |
− | + | mv "`pwd`/$oldname" "`pwd`/$newname" | |
fi | fi | ||
done | done | ||
+ | |||
+ | # Repos anzeigen | ||
+ | zypper repos | ||
+ | Die Variable <tt>$releasever</tt> soll im '''Alias''' und im '''Dateinamen''' des Repo offensichtlich nicht verwendet werden. | ||
+ | : Der Alias steht im Repo am Anfang in eckigen Klammern. | ||
+ | Beipiel für eine Repo Datei | ||
+ | [openSUSE-Leap_ISO] | ||
+ | name=openSUSE $releasever - ISO | ||
+ | enabled=1 | ||
+ | autorefresh=0 | ||
+ | baseurl=http://10.0.0.111/suse_$releasever | ||
+ | path=/ | ||
+ | keeppackages=0 | ||
+ | |||
+ | === Download === | ||
+ | ==== Zielverzeichnis ==== | ||
+ | # Beispiel | ||
+ | targetDir=/local/share/download/iso | ||
+ | * Zielverzeichnis für HTTP Repository | ||
+ | # Webserver auf einem Raspberry PI | ||
+ | targetDir=/var/www/html | ||
+ | # Webserver auf einem Suse System | ||
+ | targetDir=/srv/www/htdocs | ||
+ | |||
+ | ==== Download durchführen ==== | ||
+ | cd $targetDir | ||
+ | fileName="openSUSE-Leap-15.4-DVD-x86_64-Media.iso" | ||
+ | wget ftp://ftp5.gwdg.de/pub/opensuse/distribution/leap/${new}/iso/$fileName | ||
+ | wget ftp://ftp5.gwdg.de/pub/opensuse/distribution/leap/${new}/iso/$fileName.sha256 | ||
+ | sha256sum $fileName | ||
+ | |||
+ | ==== ... oder von DVD clonen ==== | ||
+ | dd if=/dev/cdrom of=$targetDir/$fileName | ||
+ | |||
+ | === Installationsquelle - ISO Datei === | ||
+ | Mit YAST kann man die ISO Datei direkt als lokales Repository einbinden. | ||
+ | |||
+ | Will man die Installationsquelle im LAN bereitstellen, kann man das über HTTP oder NFS machen. | ||
+ | ==== HTTP Repository ==== | ||
+ | Wenn man im LAN einen Webserver betreibt, z.B auf einem Raspberry PI, so kann man die Suse DVD per HTTP Repo verfügbar machen. | ||
+ | |||
+ | Damit die Suse Installationsquellen immer verfügbar sind, kann man die ISO Datei beim Systemstart einbinden. | ||
+ | echo "$fileName /var/www/html/suse iso9660 loop,ro,auto 0 0" >> /etc/fstab | ||
+ | Es wird eine Zeile zur <tt>/etc/fstab</tt> hinzugefügt | ||
+ | |||
+ | ==== ... oder NFS Share ==== | ||
+ | Das ISO image wird als Loop Device in das System eingehängt | ||
+ | # Beispiel | ||
+ | mkdir /mnt/suse | ||
+ | mount -o loop $targetDir/$fileName /mnt/suse | ||
+ | Nun muss man ein NFS Share erzeugen in der Datei <code> /etc/exports </code> | ||
+ | network=10.0.0.0/24 # Beispiel | ||
+ | echo "/mnt/suse $network(ro,root_squash,sync,no_subtree_check,insecure)" >> /etc/exports | ||
+ | Das kann auch mit YAST / Netzwerkdienste gemacht werden. | ||
+ | |||
+ | Nun den NFS Server starten | ||
+ | rcnfs start | ||
=== Upgrade durchführen === | === Upgrade durchführen === | ||
− | + | Mit YAST <span style="color:red">kontrollieren</span>, ob die Suse Installationsdateien als lokale ISO-Datei oder über NFS oder HTTP als <span style="color:red">Repository</span> eingebunden ist. | |
− | : | + | : Wenn das nicht der Fall ist, wird beim Upgrade mit <tt>zypper</tt> alles aus dem Internet geholt. |
− | # | + | |
− | zypper --releasever $new dup --dry-run | + | # Upgrade durchführen |
− | zypper --releasever $new dup | + | zypper --releasever $new dup --dry-run --allow-vendor-change --auto-agree-with-licenses |
+ | zypper --releasever $new dup --allow-vendor-change --auto-agree-with-licenses | ||
: .. oder neue Version direkt eingeben | : .. oder neue Version direkt eingeben | ||
− | + | zypper --releasever 15.3 dup --dry-run --allow-vendor-change --auto-agree-with-licenses | |
− | zypper --releasever 15.3 dup --dry-run | + | zypper --releasever 15.3 dup --allow-vendor-change --auto-agree-with-licenses |
− | zypper --releasever 15.3 dup | + | |
+ | == SUSE Systemupgrade per Script == | ||
+ | Ein einfaches Script <tt>suse_upgrade.sh</tt>, das den Updatevorgang mit <tt>zypper</tt> ein wenig vereinfacht. | ||
− | + | Download von [https://grubit.at/download/bash/suse_upgrade.sh suse_upgrade.sh] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== HowTo == | == HowTo == | ||
Zeile 102: | Zeile 117: | ||
=== Packman === | === Packman === | ||
Hinzufügen mit YAST oder ... | Hinzufügen mit YAST oder ... | ||
− | zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/ | + | new=15.3 |
+ | zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$new/ packman | ||
{| class="wikitable" | {| class="wikitable" |
Aktuelle Version vom 16. Oktober 2024, 10:27 Uhr
Suse Systemupgrade - Schritt für Schritt
Eine Terminal (Konsole) Sitzung als Benutzer root starten.
- Die folgende Anleitung muss zwingend von oben nach unten dirchgearbeitet werden.
- Den Code von jedem Abschnitt kopieren und dann gleich im Terminal ausführen.
- Die Reihenfolge muss eingehalten werden, da Variable gesetzt werden, die in nachfolgenden Schritten verwendet werden.
- Alles muss im selben Terminal (Konsole) Fenster durchgeführt werden
Version
Die neue Versionsnummer wird in der Variablen $new abgelegt.
old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'` main=$(echo $old | cut -d "." -f 1) sub=$(echo $old | cut -d "." -f 2) new=$main.$(expr $sub + 1) echo $new
Repos modifizieren
Dieser Schritt korrigiert Repositories, wenn nötig.
# Hardcodierte Versionsnummern durch die Variable $releasever ersetzen rm /etc/zypp/repos.d.bak -R 2> /dev/null cp -a /etc/zypp/repos.d /etc/zypp/repos.d.bak cd /etc/zypp/repos.d find . -type f | \ while read file ; do # Suchen und ersetzen: cp "$file" datei.tmp sed -e s/$old/\$releasever/g datei.tmp > "$file" done rm datei.tmp # Versionsname aus repo-Dateinamen entfernen for file in * ; do oldname=`basename "$file"` newname=`echo $oldname | sed -e s/$old/""/` if [ "$newname" != "$oldname" ] ; then mv "`pwd`/$oldname" "`pwd`/$newname" fi done # Repos anzeigen zypper repos
Die Variable $releasever soll im Alias und im Dateinamen des Repo offensichtlich nicht verwendet werden.
- Der Alias steht im Repo am Anfang in eckigen Klammern.
Beipiel für eine Repo Datei
[openSUSE-Leap_ISO] name=openSUSE $releasever - ISO enabled=1 autorefresh=0 baseurl=http://10.0.0.111/suse_$releasever path=/ keeppackages=0
Download
Zielverzeichnis
# Beispiel targetDir=/local/share/download/iso
- Zielverzeichnis für HTTP Repository
# Webserver auf einem Raspberry PI targetDir=/var/www/html # Webserver auf einem Suse System targetDir=/srv/www/htdocs
Download durchführen
cd $targetDir fileName="openSUSE-Leap-15.4-DVD-x86_64-Media.iso" wget ftp://ftp5.gwdg.de/pub/opensuse/distribution/leap/${new}/iso/$fileName wget ftp://ftp5.gwdg.de/pub/opensuse/distribution/leap/${new}/iso/$fileName.sha256 sha256sum $fileName
... oder von DVD clonen
dd if=/dev/cdrom of=$targetDir/$fileName
Installationsquelle - ISO Datei
Mit YAST kann man die ISO Datei direkt als lokales Repository einbinden.
Will man die Installationsquelle im LAN bereitstellen, kann man das über HTTP oder NFS machen.
HTTP Repository
Wenn man im LAN einen Webserver betreibt, z.B auf einem Raspberry PI, so kann man die Suse DVD per HTTP Repo verfügbar machen.
Damit die Suse Installationsquellen immer verfügbar sind, kann man die ISO Datei beim Systemstart einbinden.
echo "$fileName /var/www/html/suse iso9660 loop,ro,auto 0 0" >> /etc/fstab
Es wird eine Zeile zur /etc/fstab hinzugefügt
Das ISO image wird als Loop Device in das System eingehängt
# Beispiel mkdir /mnt/suse mount -o loop $targetDir/$fileName /mnt/suse
Nun muss man ein NFS Share erzeugen in der Datei /etc/exports
network=10.0.0.0/24 # Beispiel echo "/mnt/suse $network(ro,root_squash,sync,no_subtree_check,insecure)" >> /etc/exports
Das kann auch mit YAST / Netzwerkdienste gemacht werden.
Nun den NFS Server starten
rcnfs start
Upgrade durchführen
Mit YAST kontrollieren, ob die Suse Installationsdateien als lokale ISO-Datei oder über NFS oder HTTP als Repository eingebunden ist.
- Wenn das nicht der Fall ist, wird beim Upgrade mit zypper alles aus dem Internet geholt.
# Upgrade durchführen zypper --releasever $new dup --dry-run --allow-vendor-change --auto-agree-with-licenses zypper --releasever $new dup --allow-vendor-change --auto-agree-with-licenses
- .. oder neue Version direkt eingeben
zypper --releasever 15.3 dup --dry-run --allow-vendor-change --auto-agree-with-licenses zypper --releasever 15.3 dup --allow-vendor-change --auto-agree-with-licenses
SUSE Systemupgrade per Script
Ein einfaches Script suse_upgrade.sh, das den Updatevorgang mit zypper ein wenig vereinfacht.
Download von suse_upgrade.sh
HowTo
http://de.opensuse.org/Upgrade
Software Repositories
Folgende Softwarequellen benötige ich zusätzlich zu den Standard Repositories.
Packman
Hinzufügen mit YAST oder ...
new=15.3 zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$new/ packman
Benötigt für | Hinweise | Datum |
---|---|---|
pdftk |
pdftk wird benötigt von meinem Skript /usr/local/bin/indexprint.sh |
Juli 2018 |