Systemupgrade: Unterschied zwischen den Versionen

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen
 
(82 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== openSuse Systemupgrade mit Zypper ==
+
== Suse Systemupgrade - Schritt für Schritt ==
Aktualisierung eines openSuse Systems auf der Kommandozeile.
+
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 ===
 
=== Version ===
productName=openSUSE-Leap
+
Die neue Versionsnummer wird in der Variablen <tt>$new</tt> abgelegt.
 
  old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'`
 
  old=`cat /etc/os-release | grep VERSION_ID | cut -d "=" -f 2 | sed 's/"//g'`
  read -p "Upgrade von Version $old auf Version: " new
+
  main=$(echo $old | cut -d "." -f 1)
===Download ===
+
  sub=$(echo $old | cut -d "." -f 2)
==== ISO Datei von DVD clonen ====
+
  new=$main.$(expr $sub + 1)
fileName=$productName-$new-DVD-x86_64.iso
+
  echo $new
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 <code> /etc/exports </code>
 
/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 <tt>/etc/fstab</tt>
 
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 ====
 
<span style="color:red">Folgende Informationen sind nicht mehr aktuell</span>
 
# Aufräumen
 
rm $downloadDir/*$old* 2> /dev/null
 
  
  # Pfade ändern
+
=== Repos modifizieren ===
 +
Dieser Schritt korrigiert Repositories, wenn nötig.
 +
  # Hardcodierte Versionsnummern durch die Variable <tt>$releasever</tt> ersetzen
 
  rm /etc/zypp/repos.d.bak -R 2> /dev/null
 
  rm /etc/zypp/repos.d.bak -R 2> /dev/null
 
  cp -a /etc/zypp/repos.d /etc/zypp/repos.d.bak
 
  cp -a /etc/zypp/repos.d /etc/zypp/repos.d.bak
 
  cd /etc/zypp/repos.d
 
  cd /etc/zypp/repos.d
 
  find . -type f | \
 
  find . -type f | \
  while read file
+
while read file ; do  
  do  
 
 
     # Suchen und ersetzen:
 
     # Suchen und ersetzen:
 
     cp "$file" datei.tmp
 
     cp "$file" datei.tmp
     sed -e s/$old/$new/g datei.tmp > "$file"
+
     sed -e s/$old/\$releasever/g datei.tmp > "$file"
  done
+
done
 
  rm datei.tmp
 
  rm datei.tmp
 
   
 
   
  # Dateinamen ändern
+
  # Versionsname aus repo-Dateinamen entfernen
 
  for file in * ; do
 
  for file in * ; do
 
     oldname=`basename "$file"`
 
     oldname=`basename "$file"`
          newname=`echo $oldname | sed -e s/$old/$new/`
+
    newname=`echo $oldname | sed -e s/$old/""/`
     if [ "$newname" != "$oldname" ]
+
     if [ "$newname" != "$oldname" ] ; then
        then mv "`pwd`/$oldname" "`pwd`/$newname"  
+
      mv "`pwd`/$oldname" "`pwd`/$newname"  
 
     fi
 
     fi
 
  done
 
  done
 +
 +
# Repos anzeigen
 +
zypper repos
 +
Die Variable <tt>$releasever</tt> soll im '''Alias''' und im '''Dateinamen''' des Repo offensichtlich nicht verwendet werden.
 +
: Der Alias steht im Repo am Anfang 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
 +
 +
=== 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
  
<span style="color:green">Aktuelle Vorgangsweise - noch nicht getestet</span>
+
=== Installationsquelle - ISO Datei ===
 +
Mit YAST kann man die ISO Datei direkt als lokales Repository einbinden.
  
Die folgenden Schritte sind nur dann notwendig, wenn in den Repos hardcodierte Versionsnummern stehen. Diese sind in Zukunft überflüssig, da die Variable <tt>$releasver</tt> beim Update ausgewertet wird. Siehe nächste Schritte.
+
Will man die Installationsquelle im LAN bereitstellen, kann man das über HTTP oder NFS machen.
# Aufräumen
+
==== HTTP Repository ====
rm $downloadDir/*$old* 2> /dev/null
+
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.
 
 
# Pfade ändern
 
# Gegebenenfalls die alte Versionsnummer durch die Variable <tt>$releasever</tt> 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
+
Damit die Suse Installationsquellen immer verfügbar sind, kann man die ISO Datei beim Systemstart einbinden.
  # Versionsname aus dem Dateinamen entfernen
+
  echo "$fileName  /var/www/html/suse  iso9660 loop,ro,auto  0  0" >> /etc/fstab
for file in * ; do
+
Es wird eine Zeile zur <tt>/etc/fstab</tt> hinzugefügt
    oldname=`basename "$file"`
 
          newname=`echo $oldname | sed -e s/$old/""/`
 
    if [ "$newname" != "$oldname" ]
 
        then mv "`pwd`/$oldname" "`pwd`/$newname"
 
    fi
 
done
 
  
=== Installation ===
+
==== ... oder NFS Share ====
Vor der Installation mit YAST die Repos kontrollieren.
+
Das ISO image wird als Loop Device in das System eingehängt
* Upgrade durchführen
 
<span style="color:red">Nicht mehr aktuell</span>
 
zypper dup --dry-run
 
zypper dup
 
<span style="color:green">Aktuelle Vorgangsweise - noch nicht getestet</span>
 
# Testlauf
 
zypper --releasever $new dup --dry-run
 
zypper --releasever $new dup
 
.. oder neue Version direkt eingeben
 
 
  # Beispiel
 
  # Beispiel
  zypper --releasever 15.3 dup --dry-run
+
mkdir /mnt/suse
  zypper --releasever 15.3 dup
+
mount -o loop $targetDir/$fileName /mnt/suse
 +
Nun muss man ein NFS Share erzeugen in der Datei <code> /etc/exports </code>
 +
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
 +
 
 +
=== Upgrade durchführen ===
 +
Mit YAST <span style="color:red">kontrollieren</span>, ob die Suse Installationsdateien als lokale ISO-Datei oder über NFS oder HTTP als <span style="color:red">Repository</span> eingebunden ist.
 +
: Wenn das nicht der Fall ist, wird beim Upgrade mit <tt>zypper</tt> alles aus dem Internet geholt.
 +
 +
# Upgrade durchführen
 +
zypper --releasever $new dup --dry-run --allow-vendor-change --auto-agree-with-licenses
 +
zypper --releasever $new dup --allow-vendor-change --auto-agree-with-licenses
 +
: .. oder neue Version direkt eingeben
 +
  zypper --releasever 15.3 dup --dry-run --allow-vendor-change --auto-agree-with-licenses
 +
  zypper --releasever 15.3 dup --allow-vendor-change --auto-agree-with-licenses
 +
 
 +
== SUSE Systemupgrade per Script ==
 +
Ein einfaches Script <tt>suse_upgrade.sh</tt>, das den Updatevorgang mit <tt>zypper</tt> ein wenig vereinfacht.
 +
 
 +
Download von [https://grubit.at/download/bash/suse_upgrade.sh suse_upgrade.sh]
  
 
== HowTo ==
 
== HowTo ==
Zeile 127: Zeile 117:
 
=== Packman ===
 
=== Packman ===
 
Hinzufügen mit YAST oder ...
 
Hinzufügen mit YAST oder ...
  zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_15.0/ packman
+
new=15.3
 +
  zypper addrepo -cfp 90 http://ftp.gwdg.de/pub/linux/misc/packman/suse/openSUSE_Leap_$new/ packman
  
 
{| class="wikitable"
 
{| class="wikitable"

Aktuelle Version vom 16. Oktober 2024, 10:27 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

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 soll im Alias und im Dateinamen des Repo offensichtlich nicht verwendet werden.

Der Alias steht im Repo am Anfang 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

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

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 --auto-agree-with-licenses
zypper --releasever $new dup --allow-vendor-change --auto-agree-with-licenses
.. oder neue Version direkt eingeben
zypper --releasever 15.3 dup --dry-run --allow-vendor-change --auto-agree-with-licenses
zypper --releasever 15.3 dup --allow-vendor-change --auto-agree-with-licenses

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