Upgrade a transactional Leap server to 15.3

On how to upgrade a transactional Leap server to the next version.

Normally, the System upgrade page in the openSUSE wiki is a good resource on how to upgrade a system to the next major/minor version. However, the documentation part on transactional server is still sparse. This short blog post shows, how I managed to upgrade my Leap 15.2 transactional servers to 15.3 without much fuzz.

TL;DR

Do the upgrade prodecure for a non-transactional system with a transactional-update shell:

# transactional-update shell
# zypper --releasever=15.3 dup --download-in-advance
# reboot
# transactional-update dup   # Ignore the 'Subprocess failed. Error: Failed to import public key' errors
# reboot

Check if the upgrade was successful:

# cat /etc/os-release  | grep VERSION
VERSION="15.3"

Walkthrough

In principle we are doing exactly the same procedure as for a non-transactional system, but we need to run this in a read-write snapshot of the system. For that we use the integrated shell feature of transactional-update

# transactional-update shell            # Starts a shell in a new rw snapshot

Within this shell, we can do the typical update command

# zypper --releasever=15.3 dup --download-in-advance

This should download an install all relevant updates for the upgrade. So far so good. The upgrade went well and after restarting the system I was in a new 15.3 system:

# cat /etc/os-release  | grep VERSION
VERSION="15.3"
VERSION_ID="15.3"

However, not all packages have been updated, as a new run of transactional-update dup reveals:

...
Checking for newer version.
Subprocess failed. Error: Failed to import public key [70AF9E8139DB7C82-5f68629b] [SuSE Package Signing Key <build@suse.de>] [expires: 2024-09-20]
...

However after this round and another reboot, the system was fine:

# transactional-update dup
Checking for newer version.
transactional-update 3.2.2 started
Options: dup
...
zypper: nothing to update
...
transactional-update finished

After this update I also had the new SUSE Linux Enterprise 15 repos within the system

 9 | repo-sle-debug-update       | Update repository with debuginfo for updates from SUSE Linux Enterprise 15                  | No      | ----      | ----
10 | repo-sle-update             | Update repository with updates from SUSE Linux Enterprise 15                                | Yes     | (r ) Yes  | Yes

So all in all, that’s it. Using transactional-update shell upgrading a transactional server is as easy as upgrading a classical one.