Updated: 10 October 2026 · Applies to: openSUSE Leap 16.0, openSUSE Tumbleweed and SUSE Linux Enterprise Server 16.0 (tested, zypper 1.14.101); SLES 15 SP7 according to SUSE
The openSUSE update command is zypper. On openSUSE Leap and SUSE Linux Enterprise Server (SLES), refresh the repositories and install the official patches:
sudo zypper refresh sudo zypper patch
On openSUSE Tumbleweed, the rolling release, update with a distribution upgrade instead:
sudo zypper refresh sudo zypper dup
Afterwards, run sudo zypper needs-rebooting to see whether a reboot is needed. The steps below show what each command does, with real output from our tests.
patch, update or dup: which one?
zypper patchinstalls all needed patches: the updates the distribution has released as tested sets, including security fixes. SUSE calls it the most reliable way to update Leap and SLES. Add--with-updateto also update packages that no patch covers.zypper update(shortzypper up) installs newer versions of installed packages where possible. It skips updates that would change the package vendor or need manual dependency decisions, and lists them as "will NOT be installed".zypper dist-upgrade(shortzypper dup) makes the system match the repositories: it upgrades, can downgrade, removes packages that are no longer provided and handles package splits and renames. According to openSUSE this is the way to update Tumbleweed; on Leap and SLES it is used for release upgrades.
Update openSUSE Leap or SLES step by step
- Refresh the repository metadata:
$ sudo zypper refresh Refreshing service 'openSUSE'. Repository 'repo-openh264 (16.0)' is up to date. Repository 'repo-oss (16.0)' is up to date. All repositories have been refreshed.
- See what is waiting.
patch-checkgives a summary,list-patches(lp) the patches andlist-updates(lu) the packages. Output from Leap 16.0 (shortened):$ sudo zypper patch-check Found 2 applicable patches: Category | Patches ------------+-------- recommended | 2 2 patches needed (0 security patches) $ sudo zypper lp Repository | Name | Category | Severity | Interactive | Status | Summary ----------------+-------------------------+-------------+----------+-------------+--------+------------------------------------- repo-oss (16.0) | openSUSE-Leap-16.0-500 | recommended | moderate | --- | needed | Recommended update for patterns-base repo-oss (16.0) | openSUSE-Leap-16.0-1126 | recommended | moderate | --- | needed | Recommended update for patterns-base
patch-checkexits with code 100 when patches are needed and 101 when security patches are among them, so scripts and monitoring checks can use it. - Preview the changes without installing anything:
sudo zypper patch --dry-run(orsudo zypper up --dry-run). - Install the patches and confirm with
y:$ sudo zypper patch ... (1/2) Installing: patterns-base-fips-20241218+leap-lp160.1.1.x86_64 [..done] (2/2) Installing: patterns-base-minimal_base-20241218+leap-lp160.1.1.x86_64 [..done] Running post-transaction scripts [...done]
If a patch updates zypper itself, zypper installs that first and asks you to run the command again (exit code 103). Runsudo zypper patchuntilzypper patch-checkreports0 patches needed. - Check whether services or the whole system need a restart:
$ sudo zypper needs-rebooting No core libraries or services have been updated since the last system boot. Reboot is probably not necessary.
When a reboot is suggested, the exit code is 102.sudo zypper ps -slists running processes that still use deleted (replaced) files; restart those services withsudo systemctl restart NAME. On a minimal system it first asks for lsof:Please install package 'lsof' first.(sudo zypper in lsof). - Reboot if needed and confirm the running kernel:
sudo reboot, thenuname -r.
Update openSUSE Tumbleweed
Every Tumbleweed update is a move to a newer snapshot, so use dup. zypper warns you each time; that is expected:
$ sudo zypper dup Loading repository data... Reading installed packages... Warning: You are about to do a distribution upgrade with all enabled repositories. Make sure these repositories are compatible before you continue. See 'man zypper' for more information about this command. Computing distribution upgrade...
Read the summary before you answer y, especially the packages listed as going to be REMOVED. The zypper manual warns that a global dup can run into problems when repositories conflict with each other, for example an old release repository left next to a new one, so keep third-party repositories to a minimum.
Security patches only, and unattended updates
- Only security patches:
sudo zypper patch --category security(list them first withzypper lp --category security). One CVE:sudo zypper patch --cve CVE-NUMBER. - Without questions, for scripts:
sudo zypper --non-interactive patch --auto-agree-with-licenses.-nis the short form of--non-interactiveand goes before the command. - Systems with a read-only root that use
transactional-updaterun the same commands in a new snapshot without touching the running system:sudo transactional-update patch,upordup. The changes become active after a reboot.
Upgrade to a new release
- openSUSE Leap 15.6 to 16.0: openSUSE provides
opensuse-migration-tool. Fully update 15.6 first, thensudo zypper in opensuse-migration-tooland runsudo opensuse-migration-tool --dry-runto see what it would do, then without--dry-run. According to the Leap 16.0 release notes, Leap 16.0 needs an x86-64-v2 CPU, has replaced YaST with Cockpit, and each Leap 16 release gets 24 months of community updates. The tool is also in the Leap 16.0 repositories for later 16.x upgrades. - SLES service packs (for example 15 SP6 to SP7): the system must be registered (
sudo SUSEConnect -r REGISTRATION_CODE). Thensudo zypper migration --querylists the targets andsudo zypper migrationupgrades. - SLES 15 to 16: according to SUSE, upgrades to SLES 16.0 are only supported from SLES 15 SP7. Install all updates with
zypper patch, install thesuse-migration-sle16-activationpackage and reboot to start the migration.
Common problems
Error: "The requested URL returned error: 404", trying next mirror.during a download: one mirror did not have the file yet. zypper tried the next mirror on its own and the update completed in our test.- A repository fails to refresh: run
sudo zypper refresh -fand check the URLs withzypper lr -u. Release-specific repositories should use${releasever}in the URL, as the default openSUSE ones do. - Updates "will NOT be installed" with
zypper up: they need a vendor change or a dependency decision. Check the reason in the summary and, if you want that version, install the package explicitly withsudo zypper in PACKAGEand answer the solver question.
To see what is installed and search the repositories, see how to list installed packages and search packages on openSUSE and SUSE Linux with zypper. For a web server on SLES, see how to install Nginx on SUSE Linux Enterprise Server 15 and 16. If you would rather have patching handled for you, Ucartz offers Linux server management.
