Zypper | Basic Reference

openSUSE uses Zypper as a package manager and although there is a great graphical tool for using Zypper, it is also fantastic in the terminal. This is by no means a complete list of how to use Zypper, just a very basic reference that covers the main bits that would be most often used.

For a more complete reference check the manual in terminal.

man zypper

Or go to the openSUSE wiki that provides a much more comprehensive usage guide.


This is organized based on the task you are trying to perform. I use these all in the KDE Plasma Default terminal application, Konsole. Most of the zypper functions will require you to be in superuser (root user) mode. That is achieved by prepending the zypper command with sudo.

Update System Packages

Updates in Leap and Tumbleweed require different options.


sudo zypper update


sudo zypper dup

dup is short for distribution upgrade and this is a different process than the update command.

Refresh Repositories

sudo zypper ref

Use this to refresh the repository and ensure they are properly updated and After adding a new repository.

List Repositories

zypper ls

No sudo required

Add Repository

sudo zypper ar [some repository location] [name of repository]


sudo zypper ar http://download.opensuse.org/repositories/mozilla/openSUSE_Leap_15.1/ Mozilla

Remove Repository

sudo zypper rr [some repository]


sudo zypper rr Mozilla

Enable / Disable Repository


sudo zypper mr -d [some repository]


sudo zypper mr -e [some repository]

This is handy if you are testing different packages from different repositories.

Search for Package

No prependinig of sudo required

zypper se [some package]


zypper se falkon

To filter out only installed packages

zypper se -i [some package]

This could be used if you want to see what “python3” packages you have installed.

Install Package

sudo zypper in [some package]


sudo zypper in falkon

Bonus usage tip: You can force the reinstallation of a package by adding –force in front of the package name.

sudo zypper in --force falkon

Another Bonus tip: You can install packages using a wildcard but use this with caution as you can end up installing things unnecessarily.

sudo zypper in falkon*

Use this very carefully.

Remove Package

sudo zypper rm [some package]


sudo zypper rm falkon

This will remove the falkon package and anything dependent on falkon.

Package Locking

There are times when you want to lock a package to prevent it from being automatically upgraded. In my case, there is a specific version of an application I prefer of an application and don’t want it updated.

Add Lock

sudo zypper al [some package]

List Locks

In case you are need to see what packages you have locked.

zypper ll

Remove Lock

In case you would like to remove those locks

sudo zypper rl [some package]

There are not many packages I need to lock, currently only one but it makes for less interaction when performing updates.

Extra Cool Stuff

This section, should perhaps be moved elsewhere in this quick reference but rather than think about it, I decided to just throw it in here.

Non interactive mode


In this mode zypper does not prompt the user for any answers and uses default answers instead. When using this option it is guaranteed that zypper will not hang prompting for an answer.

For example, to update your system automatically without confirmation, you can type

zypper --non-interactive update

This command does not require confirmation from the user to proceed with update, skips all interactive patches which would need additional confirmation and also automatically answers any other prompts.

Final Thoughts

A lot of the documentation on how to use terminal applications, like Zypper can have a bit of a “barrier” to understand how to actually use it. It is not that the documentation is poorly written but rather written for a higher level of expertise. Some time ago, I had to break down the manual like this so that I could more easily reference and digest the information. This is nothing more than my own personal usage notes written for my inner 8th grader.