13 Transaktionsaktualisierungen #
Transaktionsaktualisierungen sind in SUSE Linux Enterprise Server als Technologievorschau für die Aktualisierung von SLES verfügbar, wenn das root-Dateisystem schreibgeschützt ist. Transaktionsaktualisierungen sind atomar (alle Aktualisierungen werden nur angewendet, wenn alle Aktualisierungen erfolgreich sind) und unterstützen Rollbacks. Es ist kein laufendes System betroffen, da Änderungen erst aktiviert werden, nachdem das System neu gebootet wurde. Da Reboots eine Störung darstellen, muss der Administrator entscheiden, ob ein Reboot kostspieliger ist als die Störung laufender Dienste. Wenn Reboots zu kostspielig sind, sollten Sie keine Transaktionsaktualisierungen verwenden.
Transaktionsaktualisierungen werden täglich vom Skript transactional-update ausgeführt. Das Skript prüft auf verfügbare Aktualisierungen. Falls Aktualisierungen vorhanden sind, erstellt es im Hintergrund einen neuen Snapshot des root-Dateisystems. Danach ruft es die Aktualisierungen von den Versionskanälen ab. Sobald der neue Snapshot vollständig aktualisiert ist, wird er als aktiv gekennzeichnet und wird nach dem nächsten Reboot des Systems zum neuen standardmäßigen root-Dateisystem. Wenn transactional-update automatisch ausgeführt wird (das Standardverhalten), wird das System auch neu gebootet. Sowohl die Zeitdauer für den Aktualisierungsvorgang als auch das Wartungsfenster für den Reboot sind konfigurierbar.
Es können nur Pakete aktualisiert werden, die Teil des Snapshots des root-Dateisystems sind. Sollten die Pakete Dateien enthalten, die nicht Teil des Snapshots sind, dann könnte die Aktualisierung fehlschlagen oder das System beschädigen.
RPMs, die eine Lizenz benötigen, um akzeptiert zu werden, können nicht aktualisiert werden.
13.1 Einschränkungen bei Technologievorschauen #
Technologievorschauen weisen bestimmte Einschränkungen in der Funktionalität auf. Die folgenden Pakete funktionieren nicht bei transactional-update:
nginx-Standardseite index.html ist möglicherweise nicht verfügbar
tomcat-webapps und tomcat-admin-webapps
phpMyAdmin
sca-appliance-*
mpi-selector
emacs funktioniert mit Ausnahme von Emacs-Spielen
bind und bind-chrootenv
docbook*
sblim-sfcb*
texlive*
iso_ent
openjade
opensp
pcp
plymouth
postgresql-server-10
pulseaudio-gdm-hooks
smartmontools
Die Aktualisierungskomponente des Systeminstallationsprogramms funktioniert nicht bei einem schreibgeschützten Dateisystem, weil es Transaktionsaktualisierungen nicht unterstützt.
Weitere Überlegungen:
Es ist sinnvoll, den Zeitraum zwischen der Aktualisierung des Systems und dem Reboot des Rechners so kurz wie möglich zu halten.
Es kann immer nur eine Aktualisierung angewendet werden. Nach jeder Aktualisierung und nach dem Anwenden der nächsten Aktualisierung muss ein Reboot erfolgen.
update-alternativessollte nach einer Transaktionsaktualisierung erst nach dem Reboot des Rechners ausgeführt werden.Erstellen Sie nach einer Transaktionsaktualisierung neue Systembenutzer oder Systemgruppen erst nach einem Reboot. Normale Benutzer und Gruppen (UID > 1000, GID > 1000) können jedoch erstellt werden.
YaST ist noch nicht mit Transaktionsaktualisierungen vertraut. Es funktioniert nicht, wenn ein YaST-Modul zusätzliche Pakete installieren muss. Normale Systemvorgänge, bei denen nur Konfigurationsdateien in
/etcbearbeitet werden, funktionieren.Für php7-fastcgi müssen Sie manuell einen symbolischen Link erstellen (
/srv/www/cgi-bin/php), der auf/usr/bin/php-cgizeigt.ntp ist Teil des Legacy-Moduls für die Migration von älteren SLES-Versionen. Es wird nicht auf einer neueren Installation von SUSE Linux Enterprise Server unterstützt und wurde ersetzt durch chrony. Wenn Sie ntp weiterhin verwenden, ist eine Neuinstallation erforderlich, damit die transaktionalen Updates korrekt funktionieren.
sblim-sfcb: Das gesamte sblim-Ökosystem ist mit Transaktionsaktualisierungen kompatibel.
btrfs-defragaus dem Paket btrfsmaintenance funktioniert nicht mit einem schreibgeschützten Root-Dateisystem.Für
btrfs-balancemuss die VariableBTRFS_BALANCE_MOUNTPOINTSin/etc/sysconfig/btrfsmaintenancevon/in/.snapshotsgeändert werden.Für
btrfs-scrubmuss die VariableBTRFS_SCRUB_MOUNTPOINTSin/etc/sysconfig/btrfsmaintenancevon/in/.snapshotsgeändert werden.
13.2 Aktivieren von transactional-update #
Sie müssen das Transaktionsserver-Modul bei der Systeminstallation aktivieren und dann die Transaktionsserver-Rolle auswählen. Die spätere Installation von Paketen vom Transaktionsserver-Modul in einem laufenden System wird NICHT unterstützt und könnte das System beschädigen.
Beachten Sie, dass Änderungen am Subvolume-Layout der root-Partition oder Platzierung von Unterverzeichnissen oder Subvolumes der root-Partition in eigene Partitionen (ausgenommen /home, /var, /srv und /opt) nicht unterstützt werden und höchstwahrscheinlich das System beschädigen.
13.3 Verwalten von automatischen Aktualisierungen #
Automatische Aktualisierungen werden von einem systemd.timer gesteuert, der einmal pro Tag ausgeführt wird. Damit werden alle Aktualisierungen angewendet und rebootmgrd wird informiert, dass der Rechner neu gebootet werden muss. Die Uhrzeit für die Ausführung der Aktualisierung kann angepasst werden. Weitere Informationen hierzu finden Sie unter systemd.timer(5). Informationen zum Anpassen des Wartungsfensters, in dem festgelegt wird, wann rebootmgrd das System neu bootet, finden Sie unter rebootmgrd(8).
Automatische Transaktionsaktualisierungen werden deaktiviert mit dem Kommando:
#systemctl --now disable transactional-update.timer
13.4 Das Kommando transactional-update #
Mit dem Kommando transactional-update ist eine atomare Installation oder das Entfernen von Aktualisierungen möglich. Aktualisierungen werden dann nur angewendet, wenn alle erfolgreich installiert werden können. Mit transactional-update wird ein Snapshot von Ihrem System vor Anwenden der Aktualisierung erstellt. Dieser Snapshot kann wiederhergestellt werden. Alle Änderungen werden erst nach dem Reboot aktiv.
--continueMit der Option
--continuewerden mehrere Änderungen an einem bestehenden Snapshot vorgenommen, ohne dass neu gebootet werden muss.Das standardmäßige Verhalten von
transactional-updatebesteht darin, einen neuen Snapshot vom aktuellen root-Dateisystem zu erstellen. Wenn Sie etwas vergessen, etwa die Installation eines neuen Pakets, müssen Sie einen Reboot ausführen, um die früheren Änderungen anzuwenden. Danach muss das Kommandotransactional-updateerneut ausgeführt werden, um das vergessene Paket zu installieren, und es muss erneut ein Reboot erfolgen. Sie können das Kommandotransactional-updatenicht mehrmals ohne Reboot zum Hinzufügen weiterer Änderungen zum Snapshot ausführen. Dadurch würden separate unabhängige Snapshots erstellt werden, die nicht die Änderungen der früheren Snapshots enthalten.Mit der Option
--continuekönnen Sie jedoch so viele Änderungen vornehmen, wie Sie möchten, ohne neu booten zu müssen. Es wird jedes Mal ein neuer Snapshot erstellt, der jeweils alle Änderungen der früheren Snapshots sowie die neuen Änderungen enthält. Wiederholen Sie diesen Vorgang beliebig oft und booten Sie das System neu, sobald der letzte Snapshot alle gewünschten Änderungen enthält. Der letzte Snapshot wird dann das neue root-Dateisystem.Als weitere nützliche Funktion der Option
--continuekönnen Sie jeden beliebigen vorhandenen Snapshot als Basis für Ihren neuen Snapshot auswählen. Im folgenden Beispiel wird gezeigt, wietransactional-updateausgeführt wird, um ein neues Paket in einem Snapshot basierend auf Snapshot 13 zu installieren. Danach wird es erneut ausgeführt, um ein weiteres Paket zu installieren:#transactional-update pkg install package_1#transactional-update --continue 13 pkg install package_2Die Option
--continue [num]ruftsnapper create --fromauf, siehe Abschnitt 10.6.2, „Erstellen von Snapshots“.cleanupWenn das aktuelle root-Dateisystem mit dem aktiven root-Dateisystem identisch ist (nach einem Reboot, bevor
transactional-updateeinen neuen Snapshot mit Aktualisierungen erstellt), wird für alle alten Snapshots ohne Bereinigungsalgorithmus ein Bereinigungsalgorithmus festgelegt. Dadurch wird sichergestellt, dass alte Snapshots von Snapper gelöscht werden. (Weitere Informationen finden Sie im Abschnitt zu Bereinigungsalgorithmen in Snapper (8).) Damit werden auch alle/etc-Overlay-Verzeichnisse ohne Verweis (und somit nicht verwendet) in/var/lib/overlayentfernt:#transactional-update cleanuppkg in/installInstalliert einzelne Paket aus den verfügbaren Kanälen mit dem Kommando
zypper install. Mit diesem Kommando werden auch PTF(Program Temporary Fix)-RPM-Dateien installiert.#transactional-update pkg install package_nameoder
#transactional-update pkg install rpm1 rpm2pkg rm/removeEntfernt einzelne Pakete vom aktiven Snapshot mit dem Kommando
zypper remove. Mit diesem Kommando werden auch PTF-RPM-Dateien entfernt.#transactional-update pkg remove package_namepkg up/updateAktualisiert einzelne Pakete vom aktiven Snapshot mit dem Kommando
zypper update. Es können nur Pakete aktualisiert werden, die Teil des Snapshots des Basisdateisystems sind.#transactional-update pkg update package_nameup/updateWenn neue Aktualisierungen verfügbar sind, wird ein neuer Snapshot erstellt und mit
zypper up/updateder Snapshot aktualisiert.#transactional-update updupWenn neue Aktualisierungen verfügbar sind, wird ein neuer Snapshot erstellt und mit
zypper dup –no-allow-vendor-changeder Snapshot aktualisiert. Der Snapshot wird anschließend aktiviert und wird nach einem Reboot zum neuen root-Dateisystem.#transactional-update duppatchWenn neue Aktualisierungen verfügbar sind, wird ein neuer Snapshot erstellt und mit
zypper patchder Snapshot aktualisiert.#transactional-update patchrollbackDamit wird das Standard-Subvolume festgelegt. In Systemen mit einem Schreiben-Lesen-Dateisystem wird
snapper rollbackaufgerufen. In einem Nur-Lesen-Dateisystem ohne Argument wird das aktuelle System als neues standardmäßiges root-Dateisystem festgelegt. Wenn Sie eine Zahl angeben, wird dieser Snapshot als das standardmäßige root-Dateisystem verwendet. In einem Nur-Lesen-Dateisystem werden keine zusätzlichen Snapshots erstellt.#transactional-update rollback snapshot_numbergrub.cfgDamit wird eine neue GRUB2-Konfiguration erstellt. Manchmal muss die Boot-Konfiguration angepasst werden, beispielsweise durch Hinzufügen zusätzlicher Kernel-Parameter. Bearbeiten Sie /etc/default/grub, führen Sie
transactional-update grub.cfgaus und booten Sie dann neu, um die Änderung zu aktivieren. Sie müssen sofort einen Reboot ausführen, da ansonsten die neue GRUB2-Konfiguration bei der nächsten Transaktionsaktualisierung mit dem Standardwert überschrieben wird.#transactional-update grub.cfgrebootDieser Parameter löst nach dem Abschluss der Aktion einen Reboot aus.
#transactional-update dup reboot--helpDamit wird ein Hilfe-Bildschirm mit Optionen und Unterkommandos gedruckt.
#transactional-update --help
13.5 Fehlersuche #
Führen Sie bei einem fehlerhaften Upgrade supportconfig aus, um Protokolldaten zu erfassen. Übermitteln Sie die resultierenden Dateien einschließlich /var/log/transactional-update.log an den SUSE-Support.