Systemupgrade: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
Zeile 83: Zeile 83:
 
  # Repos anzeigen
 
  # Repos anzeigen
 
  zypper repos
 
  zypper repos
Die Variable <tt>$releasever</tt> darf im Alias Namen und im Repo-Dateinamen offensichtlich nicht verwendet werden.
+
Die Variable <tt>$releasever</tt> darf im Repo-Alias und im Repo-Dateinamen offensichtlich nicht verwendet werden. Der Alias steht im Repo 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
  
 
=== Upgrade durchführen ===
 
=== Upgrade durchführen ===

Version vom 16. Oktober 2023, 08:57 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

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

... 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 /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

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 darf im Repo-Alias und im Repo-Dateinamen offensichtlich nicht verwendet werden. Der Alias steht im Repo 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

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
zypper --releasever $new dup --allow-vendor-change --download-in-heaps
.. oder neue Version direkt eingeben
zypper --releasever 15.3 dup --dry-run --allow-vendor-change
zypper --releasever 15.3 dup --allow-vendor-change --download-in-heaps

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