Skip to content

openSUSE/opensuse-migration-tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛍️ openSUSE Migration Tool

🗪 Experimental — Use with caution until a complete test suite is implemented.

A command-line tool to simplify upgrades and migrations across openSUSE distributions — including Leap, Tumbleweed, Slowroll, and even migrations from Leap to SLE.

General documentation about openSUSE Leap upgrade or Migration can be found at SDB:System_upgrade wiki.


opensuse-migration-tool

🌟 Key Features

👉 Upgrade to pre-releases such as Leap 16.0 Beta 👉 Migration across various openSUSE distributions 👉 Migration to SUSE Linux Enterprise products 👉 Integrates get.opensuse.org product API + openSUSE-repos 👉 Dry-run mode for safe previews 👉 Support for immutable systems (Leap Micro) 👉 Disabling 3rd party repos prior to migration


🔄 Supported Migration Paths

Tumbleweed       → Slowroll
Slowroll         → Tumbleweed
MicroOS          → MicroOS-Slowroll
MicroOS-Slowroll → MicroOS
Leap             → Leap n+1, SLES, Tumbleweed, Slowroll
Leap Micro       → Leap Micro n+1, MicroOS, MicroOS-Slowroll

⚠️ Unsupported or discouraged paths:

  • Tumbleweed → Leap (downgrade, not supported)
  • Tumbleweed → MicroOS (immutable shift)
  • Non-immutable → Immutable (generally unsupported)

📜 License

This project is licensed under the Apache-2.0 License. 👐


🧪 Quick Start: Testing the Tool

From git

This is also recommended for migration from older Leap releases that 15.6. Or generally for systems which no longer receive updates.

sudo zypper in bc jq curl susedialog sed gawk git # to install dependencies
git clone https://github.com/openSUSE/opensuse-migration-tool.git
cd opensuse-migration-tool
./opensuse-migration-tool --dry-run # optionally to test the tool execution
sudo ./opensuse-migration-tool
reboot

Always use --dry-run first to preview planned changes!

🔧 On regular systems (Leap, Tumbleweed, Slowroll)

sudo zypper in opensuse-migration-tool
opensuse-migration-tool --dry-run
sudo opensuse-migration-tool
reboot

💨 On immutable systems (Leap Micro)

sudo transactional-update shell
# Inside shell:
zypper in opensuse-migration-tool
opensuse-migration-tool --dry-run
sudo opensuse-migration-tool
exit && reboot  # boot into new snapshot

🐳 Development & Testing in Distrobox (Recommended)

Leap Micro inside Toolbox container

git clone https://github.com/openSUSE/opensuse-migration-tool.git
cd opensuse-migration-tool

distrobox create --image registry.opensuse.org/opensuse/leap-micro/6.0/toolbox --name micro60
distrobox enter micro60

zypper in bc jq curl dialog sed gawk
./opensuse-migration-tool --dry-run
sudo ./opensuse-migration-tool

Leap 15.6 container

distrobox create --image opensuse/leap:15.6 --name leap156
distrobox enter leap156

sudo zypper in bc jq curl dialog sed gawk
./opensuse-migration-tool --dry-run
sudo ./opensuse-migration-tool

⚠️ Heads-up: Toolbox environments are not truly immutable and may exhibit issues (e.g. bind-mounted /etc/hostnamebug 1233982).


📋 Manual Migration Resources

For traditional zypper dup approaches:


📦 Packaging & Submitting to openSUSE

Working on the package (Base:System)

Fork https://src.opensuse.org/lkocman/opensuse-migration-tool/src/branch/main/ and make

git clone gitea@src.opensuse.org:$USER/opensuse-migration-tool.git
cd opensuse-migration-tool
git checkout -b update
osc service runall
git rm -f *obscpio # Please do not add autogenerated cpio archives
git add *
vim *.changes     # Review autogenerated changelog
git push

Make a pull request against develproject https://src.opensuse.org/lkocman/opensuse-migration-tool/src/branch/main/

Forwarding to openSUSE:Factory

If not done by the maintainer:

osc sr Base:System opensuse-migration-tool openSUSE:Factory

Submitting to Leap and Leap Micro

After Factory acceptance:

osc sr openSUSE:Factory opensuse-migration-tool openSUSE:Leap:Micro:6.1
osc sr openSUSE:Factory opensuse-migration-tool openSUSE:Leap:Micro:6.2

Leap part is handled in src.opensuse.org

After the factory part is completed make a pull request against leap-16.0 and leap-16.1 branches in https://src.opensuse.org/pool/opensuse-migration-tool idally from the factory branch once the change is accepted in Factory/Tumbleweed.


🗂️ Keeping distributions.json Up to Date

The distributions.json file in the repository root is a local fallback used when get.opensuse.org is unreachable (e.g. offline development, network outage). It mirrors the data served by the get.opensuse.org API.

This file must be updated whenever a Leap milestone changes state — for example when Leap 16.1 moves from Alpha → Beta → RC → Stable, or when a new version is added or reaches EOL.

To update it:

curl -s https://get.opensuse.org/api/v0/distributions.json | jq . > distributions.json

Commit the updated file alongside any release-related changes.


🤝 Contributions Welcome!

We're happy to receive PRs, testing reports, or feedback on supported scenarios. Please open issues or pull requests on GitHub.

About

openSUSE migration tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages