The script operates under a few assumptions (yes I know, assume makes an ass out of you and me), but what can you do, except calling them prerequisites:
- Your system has all the latest updates applied according to your current repository setup (run “zypper patch; zypper dup” until there is nothing left to install)
- All enabled repositories have priorities set that make it crystal clear which of them are preferred over which in case a package appears in more than one repo
- All enabled repositories also exist for the target version, and use a repository URL that has that version number in it, and where the version number is the only difference between versions (this should usually be true for repositories from OBS and/or packman, buy YMMV)
If all this is true, running the script will create a backup of your current repository structure under /etc/zypp/repos.d_(current_version), and a repo setup for the target version under /etc/zypp/repos.d_(target_version), and then link the new structure to /etc/zypp/repos.d, and after that it will clean zyppers cache, refresh all repositories, and tell you the commands to execute to actually run the upgrade.
You might want to do those commands inside a screen session. You have been warned.
This script is provided with no warranty at all. Use it at your own risk. If you break things you get to keep the pieces.
If by any chance your root filesystem is on either LVM or btrfs, do a snapshot before you start upgrading your system.
Download the script here: leapup.tar.xz
So far I have used this script on two desktop systems which each use 20++ different repositories from OBS and packman, and no problems (aside from a few glitches in 42.3 that are connected to the nvidia drivers, but not to this upgrade process).
Update: in the last 4 days I updated five different machines using my script: my desktop computer which runs with 23 different repositories from OBS, my laptop and my work laptop which both run with 25 repos, my cloud host which runs with 10 repositories and my internal server/firewall which also runs with 10 repositories… no problems so far.
Update: There is now a RPM package for openSUSE Leap 42.3 and 15.0 here: https://software.opensuse.org/package/leapup?search_term=leapup