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 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.
- Wenn das nicht der Fall ist, wird 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
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 |
pdftkwird benötigt von meinem Skript /usr/local/bin/indexprint.sh |
Juli 2018 |