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
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 man 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 ISO Datei über NFS oder HTTP als Repo eingebunden ist.
Repo Pfade und Dateinamen ändern
Folgende Informationen sind nicht mehr aktuell
# Aufräumen rm $downloadDir/*$old* 2> /dev/null
# Pfade ändern 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/$new/g datei.tmp > "$file" done rm datei.tmp # Dateinamen ändern for file in * ; do oldname=`basename "$file"` newname=`echo $oldname | sed -e s/$old/$new/` if [ "$newname" != "$oldname" ] then mv "`pwd`/$oldname" "`pwd`/$newname" fi done
Aktuelle Vorgangsweise - noch nicht getestet
Die folgenden Schritte sind nur dann notwendig, wenn in den Repos hardcodierte Versionsnummern stehen. Diese sind in Zukunft überflüssig, da die Variable $releasver beim Update ausgewertet wird. Siehe nächste Schritte.
# Aufräumen rm $downloadDir/*$old* 2> /dev/null # Pfade ändern # Gegebenenfalls die alte Versionsnummer 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
# Dateinamen ändern # Versionsname aus dem 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
Installation
Vor der Installation mit YAST die Repos kontrollieren.
- Upgrade durchführen
Nicht mehr aktuell
zypper dup --dry-run zypper dup
Aktuelle Vorgangsweise - noch nicht getestet
# 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
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 ...
zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.0/ packman
Benötigt für | Hinweise | Datum |
---|---|---|
pdftk |
pdftk wird benötigt von meinem Skript /usr/local/bin/indexprint.sh |
Juli 2018 |