Systemupgrade

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen

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

Variante - NFS Share

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 geteste

# 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 pdftkwird benötigt von meinem Skript /usr/local/bin/indexprint.sh Juli 2018