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 patch installs 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-update to also update packages that no patch covers.
  • zypper update (short zypper 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 (short zypper 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

  1. 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.
  2. See what is waiting. patch-check gives a summary, list-patches (lp) the patches and list-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-check exits with code 100 when patches are needed and 101 when security patches are among them, so scripts and monitoring checks can use it.
  3. Preview the changes without installing anything: sudo zypper patch --dry-run (or sudo zypper up --dry-run).
  4. 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). Run sudo zypper patch until zypper patch-check reports 0 patches needed.
  5. 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 -s lists running processes that still use deleted (replaced) files; restart those services with sudo systemctl restart NAME. On a minimal system it first asks for lsof: Please install package 'lsof' first. (sudo zypper in lsof).
  6. Reboot if needed and confirm the running kernel: sudo reboot, then uname -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 with zypper lp --category security). One CVE: sudo zypper patch --cve CVE-NUMBER.
  • Without questions, for scripts: sudo zypper --non-interactive patch --auto-agree-with-licenses. -n is the short form of --non-interactive and goes before the command.
  • Systems with a read-only root that use transactional-update run the same commands in a new snapshot without touching the running system: sudo transactional-update patch, up or dup. 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, then sudo zypper in opensuse-migration-tool and run sudo opensuse-migration-tool --dry-run to 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). Then sudo zypper migration --query lists the targets and sudo zypper migration upgrades.
  • 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 the suse-migration-sle16-activation package 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 -f and check the URLs with zypper 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 with sudo zypper in PACKAGE and 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.

Was this answer helpful? 0 Users Found This Useful (0 Votes)