Systemupgrade
openSuse Systemupgrade mit Zypper
Aktualisierung eines openSuse Systems auf der Kommandozeile.
Version
productName=openSUSE-Leap old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'` read -p "Upgrade von Version $old auf Version: " new
Download
ISO Datei von DVD clonen
fileName=$productName-$new-DVD-x86_64.iso dir=/local/share/download/iso dd if=/dev/cdrom of=$dir/$fileName
oder ...
ISO Datei aus dem Internet downloaden
- Zielverzeichnis für NFS Share
dir=/local/share/download/iso
- Zielverzeichnis für HTTP Repository
# Webserver auf einem Raspberry PI dir=/var/www/html
# Suse Web Server /srv/www/htdocs
- Download
cd $dir 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
Suse Installationsabbild - ISO Datei
ISO Datei als virtuelle Laufwerk mounten
Das ISO image wird als Loop Device in das System eingehängt
mkdir /mnt/suse64bit >2 /dev/null mount -o loop $dir/$fileName /mnt/suse64bit
NFS Freigabe generieren
NFS Share erzeugen in der Datei /etc/exports
/mnt/suse64bit 10.0.0.0/24(ro,root_squash,sync,no_subtree_check,insecure)
Das kann auch mit YAST / Netzwerkdienste gemacht werden.
NFS Server starten
rcnfs start
Variante - 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.
ISO Datei mounten
Damit die Suse Installationsquellen immer verfügbar sind, kann man die ISO Datei beim Systemstart einbinden.
- Eintrag in /etc/fstab
version=15.2 /var/www/html/openSUSE-Leap-$version-DVD-x86_64.iso /var/www/html/suse iso9660 loop,ro,auto 0 0
Repositories
Repositories überprüfen
Mit YAST kontrollieren, ob die Suse Installationsdateien als lokales ISO-file oder über NFS oder HTTP als Software Repository eingebunden ist.
- Wenn das nicht der Fall ist, wird beim Upgrade mit zypper alles aus dem Internet geholt.
Repo Pfade und Dateinamen ändern
# Aufräumen rm $downloadDir/*$old* 2> /dev/null # 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
Upgrade durchführen
Vor der Installation mit YAST die Repos kontrollieren.
- Falls die Variable $new gesetzt wurde - siehe oben ...
# Testlauf zypper --releasever $new dup --dry-run zypper --releasever $new dup
- .. oder neue Version direkt eingeben
# Beispiel zypper --releasever 15.3 dup --dry-run zypper --releasever 15.3 dup
Update Befehlsfolge - erweitert
Der Variablen $new muss man natürlich vorher einen entsprechenden Wert zuweisen.
zypper --releasever $new refresh zypper --releasever $new patch --updatestack-only zypper --releasever $new dist-upgrade --allow-vendor-change shutdown -r now
Weitere Details: https://linux-club.de/forum/viewtopic.php?p=796590#p796590
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 |