Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

zypper

News

SLES Package Management

Recommended Links Installation Checklist Reference RPM Packages

YUM

rug

 YaST

Midnight Commander

Sysadmin Horror Stories

Humor Etc

Introduction

Zypper is a replacement for for extremely bad (unusable and unreliable) rug. This is huge improvement as zypper is a usable tool.

This is what you will probably use most frequently.

zypper                 # to print the list of available global options and commands
zypper help search     # to print help for the search command
zypper lr              # list repositories
zypper lp              # to see what patch updates are needed
zypper patch           # to apply the needed patches
zypper se sqlite       # to search for sqlite
zypper rm sqlite2      # to remove sqlite2
zypper in sqlite3                        # to install sqlite3
zypper --non-interactive in sqlite3      # to install sqlite3 in non inteeractive mode 
zypper in yast*        # to install all packages matching 'yast*'
zypper up              # to update all installed packages with newer versions, where possible

At the same time this is nothing, but an attempt to match YUM (aka reinventing the bicycle )

Usage:
 zypper [--global-options]  [--command-options] [arguments]
Global Options:  ( --non-interactive  provides installation without terminal)
        --help, -h              Help.
        --version, -V           Output the version number.
        --promptids             Output a list of zypper's user prompts.
        --config, -c      Use specified config file instead of the default.
        --quiet, -q             Suppress normal output, print only error
                                messages.
        --verbose, -v           Increase verbosity.
        --no-abbrev, -A         Do not abbreviate text in tables.
        --table-style, -s       Table style (integer).
        --rug-compatible, -r    Turn on rug compatibility.
        --non-interactive, -n   Do not ask anything, use default answers
                                automatically.
        --non-interactive-include-reboot-patches
                                Do not treat patches as interactive, which have
                                the rebootSuggested-flag set.
        --xmlout, -x            Switch to XML output.

        --reposd-dir, -D <dir>  Use alternative repository definition file
                                directory.
        --cache-dir, -C <dir>   Use alternative directory for all caches.
        --raw-cache-dir <dir>   Use alternative raw meta-data cache directory.
        --solv-cache-dir <dir>  Use alternative solv file cache directory.
        --pkg-cache-dir <dir>   Use alternative package cache directory.
Repository Options:
        --no-gpg-checks         Ignore GPG check failures and continue.
        --gpg-auto-import-keys  Automatically trust and import new repository
                                signing keys.
        --plus-repo, -p    Use an additional repository.
        --disable-repositories  Do not read meta-data from repositories.
        --no-refresh            Do not refresh the repositories.
        --no-cd                 Ignore CD/DVD repositories.
        --no-remote             Ignore remote repositories.
Target Options:
        --root, -R <dir>        Operate on a different root directory.
        --disable-system-resolvables
                                Do not read installed packages.
Commands:
        help, ?                 Print help.
        shell, sh               Accept multiple commands at once.
Repository Management:  (Run zypper ref -s to refresh all services and repositories. )
        repos, lr               List all defined repositories.
        addrepo, ar             Add a new repository.
        removerepo, rr          Remove specified repository.
        renamerepo, nr          Rename specified repository.
        modifyrepo, mr          Modify specified repository.
        refresh, ref            Refresh all repositories.
        clean                   Clean local caches.
Service Management:
        services, ls            List all defined services.
        addservice, as          Add a new service.
        modifyservice, ms       Modify specified service.
        removeservice, rs       Remove specified service.
        refresh-services, refs  Refresh all services.
Software Management:
        install, in             Install packages.
        remove, rm              Remove packages.
        verify, ve              Verify integrity of package dependencies.
        source-install, si      Install source packages and their build
                                dependencies.
        install-new-recommends, inr
                                Install newly added packages recommended
                                by installed packages.
Update Management:
        update, up              Update installed packages with newer versions.
        list-updates, lu        List available updates.
        patch                   Install needed patches.
        list-patches, lp        List needed patches.
        dist-upgrade, dup       Perform a distribution upgrade.
        patch-check, pchk       Check for patches.
Querying:
        search, se              Search for packages matching a pattern.
        info, if                Show full information for specified packages.
        patch-info              Show full information for specified patches.
        pattern-info            Show full information for specified patterns.
        product-info            Show full information for specified products.
        patches, pch            List all available patches.
        packages, pa            List all available packages.
        patterns, pt            List all available patterns.
        products, pd            List all available products.
        what-provides, wp       List packages providing specified capability.
Package Locks:
        addlock, al             Add a package lock.
        removelock, rl          Remove a package lock.
        locks, ll               List current package locks.
        cleanlocks, cl          Remove unused locks.
Other Commands:
        versioncmp, vcmp        Compare two version strings.
        targetos, tos           Print the target operating system ID string.
        licenses                Print report about licenses and EULAs of
Installed packages.

Examples

This is what you will probably use most frequently.

zypper                 # to print the list of available global options and commands
zypper help search     # to print help for the search command
zypper lr              # list repositories
zypper lp              # to see what patch updates are needed
zypper patch           # to apply the needed patches
zypper se sqlite       # to search for sqlite
zypper rm sqlite2      # to remove sqlite2
zypper in sqlite3                        # to install sqlite3
zypper --non-interactive in sqlite3      # to install sqlite3 in non inteeractive mode 
zypper in yast*        # to install all packages matching 'yast*'
zypper up              # to update all installed packages with newer versions, where possible

 Cheat sheet

Here you can find cheatsheet here Zypper-Usage-11.2 - openSUSE

and en.opensuse.org

 includes a few references taken from the man pages. It is recommended for use after you have analyzed the info displayed here. 

 

General usage

The general syntax of zypper is:

# zypper [global-options] command [command-options] [arguments] ... 

The components enclosed in brackets are not required, thus the simplest way to execute zypper is to type its name followed by a command. For example, to apply needed patches to the system type:

# zypper patch

Additionally, you can choose from one or more global options by typing them just before the command: (run the command, but don't ask me anything, decide on your own)

# zypper --non-interactive patch

To use the options specific to particular command, type them right after the command: (apply needed patches to the system but don't ask me to confirm any licenses, i've read them all before)

# zypper patch --auto-agree-with-licenses

Some of the commands require one or more arguments: (install or update mplayer package)

# zypper install mplayer

Some of the options also require an argument: (search for patterns)

# zypper search -t pattern

All of the above combined: (install mplayer and amarok by using the factory repository only, be verbose)

# zypper -v install --repo factory mplayer amarok

User prompts

Whenever zypper needs some input from you, it lists possible answers in brackets next to the prompt text. To choose the default answer, just press <enter> (the default answer is printed in capitals (with the exception of non-ascii characters)). Some prompts also have help available, in which case there is a question mark '?' listed as a possible answer. To make zypper use the default answers without user interaction, use the --non-interactive global option.


Vocabulary


Commands

zypper provides a number of commands which can be grouped into the following categories:

Printing help

First, it is good to know how to get help. To print general help (list of commands and global options), just type zypper without any option or arguments. To print help for specific command, use:

zypper help [command]
To obtain specific help for a command, use:

zypper [command] --help
Note that using -h instead of --help is also possible for convenience.

Repository management

You can specify existing repositories by

When using the numbers, make sure you always check zypper lr first, as the numbers may change after you made some changes to the repositories.

Listing defined repositories

repos or lr

Example output:

$ zypper lr
# | Alias                 | Name                  | Enabled | Refresh
--+-----------------------+-----------------------+---------+--------
1 | packman               | Packman 11.1          | Yes     | No
2 | fate                  | fate                  | No      | No
3 | openSUSE-11.1-Updates | Updates for 11.1      | Yes     | Yes
4 | repo-oss              | openSUSE-11.1-Oss     | Yes     | No
5 | repo-non-oss          | openSUSE-11.1-Non-Oss | Yes     | No
6 | repo-debug            | openSUSE-11.1-Debug   | No      | No
# zypper lr 5 4
Alias          : openSUSE-11.3-Non-Oss
Name           : openSUSE-11.3-Non-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/non-oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off
Type           : yast2                                                      
GPG Check      : On
GPG Key URI    :
Path Prefix    : /
Parent Service :
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Non-Oss

Alias          : openSUSE-11.3-Oss
Name           : openSUSE-11.3-Oss
URI            : http://download.opensuse.org/distribution/11.3/repo/oss/
Enabled        : Yes
Priority       : 99
Auto-refresh   : Off
Keep Packages  : Off
Type           : yast2
GPG Check      : On
GPG Key URI    :  
Path Prefix    : /
Parent Service :
MD Cache Path  : /var/cache/zypp/raw/openSUSE-11.3-Oss

Other examples:

zypper lr -u       # to include also repo URI in the table
zypper lr -d       # to include several other repo properties in the table
zypper lr -P       # to include also repo priority and sort the list by it
zypper lr -e my    # export all repository definitions into file named 'my.repo'

Adding repositories

addrepo or ar

Before any packages can be installed at least one repository must be defined. To add a repository, use the addrepo command:

Example output:

# zypper ar http://download.videolan.org/pub/vlc/SuSE/11.1 vlc

Adding repository 'vlc' [done]
Repository 'vlc' successfully added
Enabled: Yes
Autorefresh: No
URI: http://download.videolan.org/pub/vlc/SuSE/11.1

Other examples:

zypper ar http://download.opensuse.org/repositories/X11:/XGL/openSUSE_11.1/X11:XGL.repo  # via .repo file
zypper ar -c ftp://some.download.site myalias   # probe the repository upon adding
zypper ar my/dir/with/rpms local                # add your local directory with rpm files as repository

See also Libzypp for the list of supported media types and URIs.

Refreshing repositories

refresh or ref

After adding of a repository or when a repository becomes out of date, it needs to be refreshed. This mean downloading package metadata from it and preprocessing the data into .solv cache for quick reading.

# zypper refresh
Downloading repository 'Packman 11.1' metadata [done]
Building repository 'Packman 11.1' cache [done]
Downloading repository 'Updates for 11.1' metadata [done]
Building repository 'Updates for 11.1' cache [done]
Repository 'openSUSE-11.1-Oss' is up to date.
All repositories have been refreshed.

If autorefresh is enabled for a repository, you don't need to worry about refreshing, it happens automatically when needed. However, some people prefer to be in control when the refresh takes place (e.g. to avoid waiting for the refresh to complete when you only wanted to see 'zypper info krusader'), so they disable autorefresh. See man zypper for more details.

Other examples:

zypper ref packman main  # you can also specify which repositories to refresh
zypper ref -f upd        # force refresh of the 'upd' repository

Removing repositories

removerepo or rr

# zypper rr vlc 1 23 foo
Repository 23 not found by alias, number or URI.
Repository foo not found by alias, number or URI.
Removing repository 'repo-debug' [done]
Repository 'repo-debug' has been removed.
Removing repository 'vlc' [done]
Repository 'vlc' has been removed.

Modifying repositories

modifyrepo or mr

Disable repository #6:

# zypper mr -d 6
Repository 'repo-non-oss' has been sucessfully disabled.

Enable autorefresh and rpm files caching for 'packman' repository and set its priority to 70:

# zypper mr -rk -p 70 packman
Autorefresh has been enabled for repository 'packman'.
RPM files caching has been enabled for repository 'packman'.
Repository 'packman' priority has been set to 70.

Disable RPM files caching for all repositories:

# zypper mr -Ka
Nothing to change for repository 'local'.
RPM files caching has been disabled for repository 'packman'.
Nothing to change for repository 'fate'.
Nothing to change for repository 'upd'.
Nothing to change for repository 'repo-oss'.
Nothing to change for repository 'repo-non-oss'.

Enable RPM files caching for all repositories:

# zypper mr -ka
RPM files caching has been enabled for repository 'repo-non-oss'.
RPM files caching has been enabled for repository 'Main Repository (OSS)'.
RPM files caching has been enabled for repository 'Main Repository (NON-OSS)'.
RPM files caching has been enabled for repository 'openSUSE-11.1-Updates'.


Renaming repositories

renamerepo or nr

# zypper nr 3 upd
Repository 'openSUSE-11.1-Updates' renamed to 'upd'.

This command is currently only able to change the alias of the repository. If you wish to change the displayed name of the repository, take a look at the mr command.

Keep the aliases short and simple for an easy use as arguments of commands and --repo options. Using an alias is safer than using repo number (since that may change and you can easily make a mistake) and easier than using URI (since they are long, leaving you with copy-and-paste).

Export/Import repositories

repos --export or lr -e

You can export your complete repository list to a file and import it later or on another machine.

# zypper lr --export backups/repos/foo.repo

# zypper ar backups/repos/foo.repo

Service management

<to be added>


Package management

Selecting packages

There are several ways in which you can choose packages for installation or removal.

Installing packages

install or in

You can install packages by name...

# zypper install git
Reading installed packages...

The following NEW packages are going to be installed:
  subversion-perl sqlite3 perl-DBD-SQLite git-svn git-cvs git


Overall download size: 1.1 M. After the operation, additional 4.6 M will be used.
Continue? [YES/no]:
Downloading package subversion-perl-1.5.0-96.1.x86_64 (1/6), 950.0 K (4.1 M unpacked)
Downloading: subversion-perl-1.5.0-96.1.x86_64.rpm [done]
Installing: subversion-perl-1.5.0-96.1 [done]
Downloading package sqlite3-3.5.7-17.1.x86_64 (2/6), 30.0 K (40.0 K unpacked)
Downloading: sqlite3-3.5.7-17.1.x86_64.rpm [done]
Installing: sqlite3-3.5.7-17.1 [done]
Downloading package perl-DBD-SQLite-1.14-41.1.x86_64 (3/6), 44.0 K (103.0 K unpacked)
Downloading: perl-DBD-SQLite-1.14-41.1.x86_64.rpm [done]
Installing: perl-DBD-SQLite-1.14-41.1 [done]
Downloading package git-svn-1.5.4.5-26.1.x86_64 (4/6), 66.0 K (195.0 K unpacked)
Downloading: git-svn-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-svn-1.5.4.5-26.1 [done]
Downloading package git-cvs-1.5.4.5-26.1.x86_64 (5/6), 63.0 K (205.0 K unpacked)
Downloading: git-cvs-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-cvs-1.5.4.5-26.1 [done]
Downloading package git-1.5.4.5-26.1.x86_64 (6/6), 10.0 K (3.0 K unpacked)
Downloading: git-1.5.4.5-26.1.x86_64.rpm [done]
Installing: git-1.5.4.5-26.1 [done]

...or by capability they provide:

# zypper in MozillaFirefox \< 3
Reading installed packages...
'MozillaFirefox' providing 'MozillaFirefox<3' is already installed.
Nothing to do.
# zypper in MozillaFirefox \>= 3
Reading installed packages...

The following packages are going to be upgraded:
  mozilla-xulrunner190-translations MozillaFirefox mozilla-xulrunner190-gnomevfs
mozilla-xulrunner190 MozillaFirefox-translations


The following package is going to be REMOVED:
  mozilla-xulrunner190-lang


Overall download size: 11.0 M. After the operation, 12.9 M will be freed.
Continue? [Y/n/p/?]:
# zypper in 'libqtiff.so()(64bit)'
Reading installed packages...
'libqt4-x11' providing 'libqtiff.so()(64bit)' is already installed.
Nothing to do.

Other examples:

zypper in yast*                     # install all yast modules
zypper in -t pattern lamp_server    # install lamp_server pattern (packages needed for a LAMP server)
zypper in emacs pattern:lamp_server # install the emacs package and lamp_server pattern
zypper in vim -emacs                # install vim and remove emacs in one go
zypper in amarok packman:libxine1   # install libxine1 from packman and amarok from any repo
zypper in bitchx-1.1-81.x86_64.rpm  # install bitchx rpm from local directory
zypper in -f subversion             # force reinstallation of subversion

Removing packages

remove or rm

The remove command is very much like the install command, except that the effect is the opposite :O)

# zypper remove sqlite
Reading installed packages...

The following packages are going to be REMOVED:
  sqlite3 perl-DBD-SQLite git-cvs git


After the operation, 351.0 K will be freed.
Continue? [YES/no]: n


Source packages and build dependencies

source-install or si

# zypper si zypper
Reading installed packages...

The following NEW packages are going to be installed:
  libzypp-devel libsatsolver-devel


The following source package is going to be installed:
  zypper


Overall download size: 1.5 M. After the operation, additional 6.7 M will be used.
Continue? [YES/no]:

You can also install only the build deps or only the source package:

zypper si -D zypper    # only the source packages (no build deps)
zypper si -d zypper    # only the build deps (no source package)

Updating packages

update or up

The following commands update packages with their newer available versions. See also Update Management for more information.

zypper up                           # update all installed packages with newer version as far as possible
zypper up libzypp zypper            # update libzypp and zypper
zypper in sqlite3                   # update sqlite3 or install it if not yet installed

Querying

Searching packages

search or se

By default, the search command looks for packages of any type, status or repository, having names containing specified string (compares case-insensitively):

# zypper se sqlite
Reading installed packages...

S | Name                     | Summary                                                        | Type
--+--------------------------+----------------------------------------------------------------+--------
  | libapr-util1-dbd-sqlite3 | DBD driver for SQLite 3                                        | package
i | libgda-3_0-sqlite        | Sqlite Provider for GNU Data Access (GDA)                      | package
  | libqt4-sql-sqlite        | Qt 4 sqlite plugin                                             | package
i | libsqlite3-0             | Shared libraries for the Embeddable SQL Database Engine        | package
  | libsqlite3-0-32bit       | Shared libraries for the Embeddable SQL Database Engine        | package
  | mediatomb-sqlite         | UPnP AV MediaServer                                            | package
i | mono-data-sqlite         | Database connectivity for Mono                                 | package
  | pdns-backend-sqlite2     | SQLite 2 backend for pdns                                      | package
  | pdns-backend-sqlite3     | SQLite 3 backend for pdns                                      | package
i | perl-DBD-SQLite          | The DBD::SQLite is a self contained RDBMS in a DBI driver      | package
i | php5-sqlite              | PHP5 Extension Module                                          | package
  | python-sqlite2           | Python bindings for sqlite 2                                   | package
  | qt3-sqlite               | SQLite Database Plug-In for Qt                                 | package
  | rekall-sqlite            | Rekall sqlite Database Backend                                 | package
  | rubygem-sqlite3          | A Ruby interface for the SQLite3 database engine               | package
i | sqlite2                  | Embeddable SQL Database Engine                                 | package
  | sqlite2-32bit            | Embeddable SQL Database Engine                                 | package
  | sqlite2-devel            | Embeddable SQL Database Engine                                 | package
i | sqlite3                  | Embeddable SQL Database Engine                                 | package
  | sqlite3-devel            | Embeddable SQL Database Engine                                 | package
  | sqlite3-tcl              | Tcl binding for SQLite                                         | package
  | tntdb1-sqlite            | Tntdb is a c++-class-library for easy database-access - sqlite | package
  | ulogd-sqlite             | SQLite output plugin for ulogd                                 | package

The letter "i" in column one (1); states that the package is already installed on the local machine. To see all available versions of matching packages, use "--details/-s" option:

# zypper search -s --match-exact virtualbox-ose
Reading installed packages...

S | Name           | Type    | Version    | Arch   | Repository
--+----------------+---------+------------+--------+------------------------------------
v | virtualbox-ose | package | 1.6.2-2.1  | x86_64 | VirtualBox OSE
i | virtualbox-ose | package | 1.5.6-33.1 | x86_64 | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.5 | x86_64 | VirtualBox OSE (
v | virtualbox-ose | package | 1.6.2-2.1  | i586   | VirtualBox OSE
v | virtualbox-ose | package | 1.5.6-33.1 | i586   | openSUSE-11.1-Oss
v | virtualbox-ose | package | 1.5.6-20.3 | i586   | VirtualBox OSE

The letter "i" in column one (1); states that the software selected is already installed on the local machine, while the letter "v" in column one (1); states that there are other versions of the product installed on the local machine.

Other examples:

zypper se -dC --match-words RSI   # look for RSI acronym (case-sensitively), also in summaries and descriptions
zypper se 'yast*'                 # show all packages starting with 'yast' (beware of shell expansion, quote the strings if unsure!)
zypper se -r packman              # list all packages from 'packman' repository
zypper se -i sqlite               # show all installed packages containing 'sqlite' in their name
zypper se -t pattern -r repo-oss  # list all patterns available in the 'repo-oss' repository
zypper se -t product              # list all available products

Obtaining information about packages

info or if

zypper info amarok
Reading installed packages...


Information for package amarok:

Repository: Packman 11.1
Name: amarok
Version: 1.4.9.1-103.pm.1
Arch: x86_64
Vendor: packman.links2linux.de
Installed: Yes
Status: up-to-date
Installed Size: 12.1 M
Summary: Media Player for KDE
Description:
Amarok is a media player for all kinds of media, supported by aRts, GStreamer
or Xine (depending on the packages you install). This includes MP3, Ogg
Vorbis, audio CDs and streams.
It also supports audio effects of all kinds that are provided by aRts.
Playlists can be stored in .m3u or .pls files.

Amarok also provides audio file collection management, by using either an
embedded sqlite3, a MySQL or a PostgreSQL database.

This command displays detailed information about package named 'amarok'.

Other examples:

zypper info -t patch MozillaFirefox    # show information about 'MozillaFirefox' patch
zypper patch-info MozillaFirefox       # the same as above
zypper info -t pattern lamp_server     # show info about 'lamp_server' pattern
zypper info -t product openSUSE-FTP    # show info about specified product

Dependencies

what-provides or wp

To list all providers of specified capability, do:

# zypper wp firefox
Reading installed packages...
S | Name           | Type    | Version     | Arch   | Repository
--+----------------+---------+-------------+--------+------------------
i | MozillaFirefox | package | 3.0-0.1     | x86_64 | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | x86_64 | openSUSE-11.1-Oss
v | MozillaFirefox | package | 3.0-0.1     | i586   | Updates for 11.1
v | MozillaFirefox | package | 2.9.95-25.1 | i586   | openSUSE-11.1-Oss

This command is similar to rpm -q --whatprovides firefox, but rpm is only able to query the RPM database (database of the installed packages). Zypper, on the other hand, will tell you about providers of the capability from any repository, not only the installed ones.


Other queries

Commands patches, packages, patterns, and products are similar to search -s -t [patch,package,pattern,product], except that they display some additional information specific to the corresponding package type. For example patches shows also the status of patches (Needed/Security/Not Applicable).

Commands list-updates and patch-check are discussed in Update Management.

Package locks

locks or ll addlock or al removelock or rl cleanlocks or cl

Package locks serve the purpose of preventing changes to the packages on the system. Packages matching an active lock can't change their installed status; installed packages can't be removed or upgraded, packages not yet installed can't be installed.

To lock all packages starting with 'yast2', do:

# zypper al 'yast2*'
Reading installed packages...
Specified lock has been successfully added.

Again beware of shell expansion, use quotes if there is a possibility that yast* will match some files or directories in the working directory.

To list currently active locks:

# zypper ll
# | Name             | Type    | Repository
--+------------------+---------+-----------
1 | libpoppler3      | package | (any)
2 | libpoppler-glib3 | package | (any)
3 | yast*            | package | (any)

To remove a lock, do:

# zypper rl yast2-packager
Reading installed packages...
The following query locks some of the objects you want to unlock:

type: package
match_type: glob
case_sensitive: on
solvable_name: yast2*

Do you want remove this lock? [YES/no]: y
Lock count has been succesfully decreased by: 1

Other examples:

zypper al zypper # lock package 'zypper' (exact match) zypper al -r repo-oss virtualbox* # restrict the lock to 'repo-oss' repository (allowing installation from others) zypper rl 3 # remove lock by number

You can manipulate the locks also by directly editing the locks file.

Utilities

Verify dependencies

verify or ve

You may occasionally end up with a broken system when it comes to package dependencies. If some of your applications fails to start with a message indicating that it misses something, this is something for zypper to check:

$ rpm -e --nodeps mozilla-xulrunner190 $ firefox
Could not find compatible GRE between version 1.9.0 and 1.9.0.
# zypper ve
Reading installed packages...
Some of the dependencies of installed packages are broken. In order to fix these dependencies, the following actions need to be taken:

The following NEW package is going to be installed:
  mozilla-xulrunner190


Overall download size: 6.5 M. After the operation, additional 23.5 M will be used.
Continue? [YES/no]: y


Install new recommended packages

install-new-recommends or inr

This command finds and installs newly added recommended packages for packages you have already installed. This provides an easy way to get new language bundles for your software or drivers for newly added hardware.

# zypper inr
Reading installed packages...

The following NEW packages are going to be installed:
  kdebase4-openSUSE-lang bundle-lang-common-cs


Overall download size: 534.0 K. After the operation, additional 1.9 M will be used.
Continue? [YES/no]:

Check processes

ps

This command shows processes that use files deleted by recent package upgrades or removal

There are some running programs that use files deleted by recent upgrade. You may wish to restart some of them. Run 'zypper ps' to list these programs.
# zypper ps
The following running processes use deleted files:

PID   | PPID  | UID  | Login | Command       | Service | Files
------+-------+------+-------+---------------+---------+--------------------------------
10604 | 10603 | 1000 | geeko | chrome        |         | /usr/share/mime/mime.cache
      |       |      |       |               |         | /usr/share/mime/mime.cache
15304 | 3195  | 1000 | geeko | kio_thumbnail |         | /var/tmp/kdecache-geeko/ksycoca4
      |       |      |       |               |         | /var/tmp/kdecache-geeko/ksycoca4

You may wish to restart these processes.
See 'man zypper' for information about the meaning of values in the above table.

Update management

There are two approaches to keeping your system up to date. One is patch-wise, the second is package-wise.

The patch-wise approach is particularly useful for people using stable releases and want update their systems with patches released through online update repositories. Update repositories are added by default during installation or upgrade of the system, or they can be added via Online Update Configuration from the Software tab in YaST Control Center, or manually using zypper. Here is the list of available openSUSE update repositories.

YaST equivalent of this feature is the Online Update module.

The second, package-wise update is described in section Package Updates and servers for general updating of packages from any repository with their newer versions.

Listing needed patches

list-patches or lp

To list all needed patch updates, do:

# zypper lp
Reading installed packages...
Patches

Repository       | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+-------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | Needed
Updates for 11.1 | MozillaFirefox     | 50      | recommended | Needed
Updates for 11.1 | NetworkManager-kde | 49      | recommended | Needed

Sometimes only updates affecting the package management are listed, since these should be applied first. Once applied, the rest of available updates will be listed by this command.

This command is equivalent to zypper up -t patch known from older zypper versions. To list all available package updates, use:

# zypper lu

Applying patches

patch

To apply the needed patches, do:

# zypper patch
Reading installed packages...

The following packages are going to be upgraded:
  NetworkManager-kde mozilla-nss mozilla-nspr kde4-korganizer


The following NEW patches are going to be installed:
  NetworkManager-kde MozillaFirefox KDE4-fixes


Overall download size: 2.9 M. After the operation, additional 283.0 K will be used.
Continue? [YES/no]:


Listing all patches

patches

The list-updates command only lists needed patches. To list all available patches, use:

# zypper patches
Reading installed packages...
Catalog          | Name               | Version | Category    | Status
-----------------+--------------------+---------+-------------+---------------
Updates for 11.1 | KDE4-fixes         | 38      | recommended | Installed
Updates for 11.1 | MozillaFirefox     | 50      | recommended | Installed
Updates for 11.1 | NetworkManager-kde | 49      | recommended | Installed
Updates for 11.1 | autoyast2          | 37      | recommended | Installed
Updates for 11.1 | courier-authlib    | 42      | security    | Not Applicable
Updates for 11.1 | insserv            | 47      | recommended | Installed
Updates for 11.1 | opera              | 43      | security    | Installed


Checking patches

patch-check

This command will tell you whether there are any important patches available for your system and the number of such patches:

# zypper pchk
Reading installed packages...
0 patches needed (0 security patches)


Getting information about patches

patch-info
info -t patch

# zypper info -t patch MozillaFirefox
Reading installed packages...


Information for patch MozillaFirefox:

Name: MozillaFirefox
Version: 50
Arch: noarch
Vendor: [email protected]
Status: Installed
Category: recommended
Created On: Thu 01 Jan 1970 01:00:00 AM CET
Reboot Required: No
Package Manager Restart Required: No
Interactive: No
Summary: Mozilla Firefox 3.0
Description:
This patch updates Mozilla Firefox to the final 3.0 version.

The dependend libraries mozilla-xulrunner190, mozilla-nspr
and mozilla-nss were also brought to their release version.

Package updates

list-updates or lu
update or up

To simply update installed packages with their newer available versions, do:

# zypper up

You can get a list of available updates with:

# zypper lu

The above commands will list or update only such packages whose update has no dependency problems. To get raw list of packages with newer versions than those installed, do:

# zypper lu -a

This will list all update candidates, regardless whether they are installable or not, or whether they need user's interaction to resolve some problems.

Distribution upgrade

dist-upgrade or dup

This command uses the distribution upgrade algorithm, which handles package splits, unmaintaned packages, and similar. Use it to switch to another distribution release.

# zypper dup

It is recommended to enable only the main repository of the distribution you want to install plus a few important repositories you were using (even better - their version corresponding to the current main repository) during a dist-upgrade. You can achieve this by disabling the old repositories using zypper mr -da, adding the new repositories via zypper ar and issuing zypper dup. You can also specify repositories to be used using --repo option: zypper dup -r repo1 -r repo2 ....

Q: Is it true that "zypper up" only upgrades packages when a newer version is in the same repo as the outdated package and "zypper dup" upgrades everything, no matter in which repo the new package is located?

A: "zypper up" updates the packages if a newer version is available but will not change the vendor (Note: The whole build service currently has the same vendor). "zypper dup" will try to sync your currently installed packages with the ones available from (all) the repos you have enabled. This means it will also downgrade packages if your installed version is newer than the one available in the repo.


Using zypper in scripts and applications

Zypper supports several global options which make it suitable for use within automated processes like scripts. Also, several different exit codes listed in zypper's manual page can be checked for when using zypper in an automated process.


Non interactive mode

--non-interactive

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 on stdin, or in an endless loop.

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.


No GPG checks mode

--no-gpg-checks

If this option is used, zypper will always choose to continue if some of the gpg checks fails, e.g. a repository file is not signed and should be, a file is signed and the gpg check fails, etc.


Auto-agree with licenses

--auto-agree-with-licenses

This is special option for the install, remove and update commands. By using this, the user declares he/she agrees with the terms of licenses the command will install, and zypper will automatically say 'yes' to the license confirmation prompt. This is useful for people installing the same set of packages on multiple machines (by an automated process) and have read all the licenses before.


Quiet output

--quiet

Avoids displaying too much texts like progress information and only displays result of the operation and error messages.


XML output

--xmlout

This option makes zypper to talk in XML. This allows scripts, graphical front-ends or other types of applications which would like to use zypper, to parse zypper's output in a well-defined, standard way. The RNC schema of zypper's XML output is available here and at /usr/share/zypper/xml/xmlout.rnc.

Not all (but most of) the output is currently in XML; the goal is to have all possible output in XML.


Prompts

The following should be a complete list of cases where zypper needs user interaction together with the replies used in non-interactive mode. All the additional options mentioned here have higher priority over --non-interactive, so if used, the answer they imply are automatically used even if --non-interactive isn't used.


GPG-related prompts

Where --no-gpg-checks is applied, a message is displayed or a warning is written to stderr and logged.

prompt default answer with --no-gpgp-checks note
accept unsigned file? N Y
accept new key (reject the key, trust temporarily, or trust always? [r/t/a]) R R a new key can be trusted or imported in the interactive mode only
accept unknown key? N Y
verification of signed file failed, continue? N Y
no digest for a file, continue? N Y
accept unknown digest? N Y

Other prompts

prompt default answer other answer note
proceed with installation/removal/update? Y in addition, the --no-confirm option can be used with the install/remove/update commands even without the global --non-interactive
confirm 3rd party license N Y if --auto-agree-with-licenses is used in addition, for zypper update, --skip-interactive option can be used to exclude interactive patches from to-be-installed list (a heritage of rug)
confirm a patch message Y
problem while installing/removing a resolvable, Abort/Retry/Ignore? ABORT this is ugly and can be improved in future
problem while downloading a package, Abort/Retry/Ignore? ABORT this is also ugly, can be enhanced somehow in the future
dependency conflict, #/s/r/c (solution number, skip, retry, or cancel) c always cancel, user interaction is needed to resolve dependencies
media change request ABORT
remove problematic lock? Y

In XML output, prompts are indicated by <prompt> tag, containing id attribute. Enumeration of all known ids is available in prompt.h include file packaged with zypper (/usr/include/zypper/prompt.h).


Compatibility with Rug

Zypper's syntax is similar to that of Rug but its command and option set has started to diversify from rug as well as its output and behavior. However, zypper is able to work also in rug-compatible mode and supports most of the rug commands. For more details see man zypper, section COMPATIBILITY WITH RUG.


Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

zypper

zypper is a command-line interface to ZYpp system management library. It can be used to install, update, remove software, manage repositories, perform various queries, and more.

zypper [--global-opts] <command> [--command-opts] [command-arguments]
zypper help [command] 

Repositories

Libzypp works with package metadata, that is information about packages and their relations extracted from RPM packages and other data like patch information, pattern definitions, etc. These data are stored together with the RPM files in folders called repositories. Repositories can be placed on various media like an HTTP or FTP server, DVD, or a folder on a local disc.

There is a special set of commands in zypper intented to manipulate repositories. Also many commands and options take a repository as an argument.

Resource Identfiers (URI)

To specify locations of repositories or other resources (RPM files, .repo files) you can use any type of URIs supported by libzypp. See http://en.opensuse.org/Libzypp/URI for a complete list and usage examples.

In addition to these URIs you can use plain directory and file paths in which case zypper automatically treats them as dir:/path URIs.

Refresh

Refreshing a repository means downloading metadata of packages from the medium (if needed), storing it in local cache (typically under /var/cache/zypp/raw/<alias> directory) and preparsing the metadata into .solv files (building the solv cache), typically under /var/cache/zypp/solv/<alias>.

The metadata get refreshed either automatically or on user request. An automatic refresh takes place right before reading metadata from the database if the auto-refresh is enabled for the repository and the metada is reported to be out of date. If the auto-refresh is disabled, the repository will only be refreshed on user request. You can request a refresh by calling zypper refresh (see the documentation of the refresh command for details).

The repository metadata are checked for changes before actually doing the refresh. A change is detected by downloading one or two metadata index files (small files) and comparing the checksums of the cached ones and the remote ones. If the files differ, the repository is out of date and will be refreshed.

To delay the up-to-date check (and thus the automatic refresh) for a certain number of minutes, edit the value of the repo.refresh.delay attribute of ZYpp config file (/etc/zypp/zypp.conf). This means, zypper will not even try to download and check the index files, and you will be able to use zypper for operations like search or info without internet access or root privileges.

Services

Services are one level above repositories and serve to manage repositories or to do some special tasks. Libzypp currently supports only one type of services, the Repository Index Service (RIS).

Repository Index Service (RIS) is a special type of repository which contains a list of other repositories. This list can be generated dynamically by the server according to some URI parameters or user name, or can be static. Once such service is added to your system, zypper takes care of adding, modifying, or removing these repositories on your system to reflect the current list. See section Service Management and http://en.opensuse.org/Standards/Repository_Index_Service for more details.

Package Types

zypper works with several types of resource objects, called resolvables. A resolvable is a package, patch, pattern, or a product.

package - an ordinary RPM package. patch - update of one or more packages. A patch can include special scripts and messages to be run or shown during installation of the update. pattern - group of packages required or recommended to install some functionality. product - group of packages which are necessary to install a product. srcpackage - source code package (.src.rpm). This type works in search and install commands.

Throughout this manual we will refer to resolvables simply as packages and to resolvable types as package types. These type names can be used as arguments of --type option in several commands like install, info, or search.

Package Dependencies

Software packages depend on each other in various ways. Packages usually require or recommend other packages, they can declare that they conflict with other packages, etc. Packages can also depend on specific hardware. See http://en.opensuse.org/Software_Management/Dependencies for more information. Zypper utilizes a dependency solver to find out what packages are needed to be installed according to user's request.

COMMANDS


zypper provides a number of commands. Each command accepts the options listed in the GLOBAL OPTIONS section. These options must be specified before the command name. In addition, many commands have specific options, which are listed in this section. These command-specific options must be specified after the name of the command and before any of the command arguments.

General Commands

help [command]
Shows help texts. If invoked without any argument (just 'zypper' or 'zypper help'), zypper displays global help text which lists all available global options and commands (except those provided only for compatibility with rug).

If invoked with a command name argument, zypper displays help for the specified command, if such command exists. Long as well as short variants of the command names can be used.

For your convenience, zypper help can be invoked in any of the following ways:

$ zypper help [command] $ zypper -h|--help [command] $ zypper [command] -h|--help

shell (sh)
Starts a shell for entering multiple commands in one session. Exit the shell using "exit", "quit", or Ctrl-D.

The shell support is not complete so expect bugs there. However, there's no urgent need to use the shell since libzypp became so fast thanks to the SAT solver and its tools (openSUSE 11.0), but still, you're welcome to experiment with it.

Package Management Commands

info (if) [options] <name> ...
Displays detailed informaion about the specified packages.

For each specified package, zypper finds the best available version in defined repositories and shows information for this package.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number or URI. This option can be used multiple times.
-t, --type <type>
Type of package (default: package). See section Package Types for list of available package types.
--requires
Show also symbols required and pre-required by the package. Available for package and patch type only.
--recommends
Show also symbols recommended by the package. Available for package and patch type only.
Examples:
Show information about package 'workrave': $ zypper info workrave

Show information about patch 'libzypp': $ zypper info -t patch libzypp

Show information about pattern 'lamp_server': $ zypper info -t pattern lamp_server

install (in) [options] <name|capability|rpm_file_uri> ...
Install or update packages.

The packages can be selected by their name or by a capability they provide.

Capability is: NAME, or "NAME[.ARCH][OP<EDITION>]", where ARCH is architecture code, OP is <, <=, =, >=, or > and EDITION is VERSION[-RELEASE]. For example: zypper=0.8.8-2.

The NAME component of a capability is not only a package name but any symbol provided by packages: /bin/vi, libcurl.so.3, perl(Time::ParseDate). Just remember to quote to protect the special characters from the shell, for example: zyppergt;0.8.10 or 'zypper>0.8.10'

If EDITION is not specified, the newest installable version will be installed. This also means that if the package is already installed and newer versions are available, it will get upgraded to the newest installable version.

If ARCH is not specified, or the last dot of the capability name string is not followed by known architecture, the solver will treat the whole string as a capability name. If the ARCH is known, the solver will select a package matching that architecture and complain if such package cannot be found.

Zypper will report packages that it cannot find. Further, in interactive mode, zypper proceeds with installation of the rest of requested packages, and it will abort immediately in non-interactive mode. In both cases zypper returns ZYPPER_EXIT_INF_CAP_NOT_FOUND after finishing the operation.

Zypper is also able to install plain RPM files while trying to satisfy their dependencies using packages from defined repositories. You can install a plain RPM file by specifying its location in the install command arguments either as a local path or an URI. E.g.:

$ zypper install ~/rpms/foo.rpm http://some.site/bar.rpm

Zypper will download the files into its cache directory (/var/cache/zypper/RPMS), add this directory as a temporary plaindir repository and mark the respective packages for installation.

In the install command, you can specify also packages you wish to remove in addition to the packages you wish to install, by prepending their names by a '-' or '~' character. For example:

$ zypper install vim -emacs $ zypper remove emacs +vim

will both install vim and remove emacs. Note that if you choose to use '-' with the first package you specify, you need to write '--' before it to prevent its interpretation as a command option.

$ zypper install -- -boring-game great-game great-game-manual

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number or URI. This option can be used multiple times.
-t, --type <type>
Type of package to install (default: package). See section Package Types for list of available package types.

If pattern is specified, and the pattern is not yet installed, all packages required and recommended by the pattern will be installed. A pattern is considered installed if all the packages and patterns it requires are installed. Thus a pattern can be evalueated as installed even if you do not install the pattern itself, but rather the packages it requries. Use zypper search -t pattern [name] to look for available patterns and zypper info -t pattern <name> to list its contents.

If patch is specified, zypper will install and/or remove packages to satisfy specified patch. This is a way to ensure that specific bug fix is installed. Like patterns, patches can also be evaluated as installed by installing the packages needed to satisfy the patch. Use zypper list-patches to look for available needed patches and zypper info -t patch <name> to display detailed information about a patch.

If product is specified, zypper ensures all packages required by the product are installed. Use zypper se -t product [name] to look for available products and zypper info -t product <name> to display detailed information about a product.

-n, --name Select packages by their name, don't try to select by capabilities.
-f, --force
Install even if the item is already installed (reinstall)
--from <alias|name|#|URI>
Select packages from specified repository. If strings specified as arguments to the install command match packages in repositories specified in this option, they will be marked for installation. This option currently implies --name, but allows using wildcards for specifying packages.
-C, --capability
Select packages by capabilities.
-l, --auto-agree-with-licenses
Automatically say 'yes' to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.
--debug-solver
Create solver test case for debugging. Use this option, if you think the dependencies were not solved all right and attach the resulting /var/log/zypper.solverTestCase directory to your bug report. To use this option, simply add it to the problematic install or remove command.
--no-recommends
By default, zypper installs also packages recommended by the requested ones. This option causes the recomended packages to be ignored and only the required ones to be installed.
-R, --no-force-resolution
Do not force the solver to find a solution. Instead, report dependency problem and prompt the user to resolve it manually.
--force-resolution
Force the solver to find a solution, even if it would mean removing all packages with unfulfilled requirements.

The default behavior is 'force' in the interactive mode and 'no-force' in the non-interactive mode. If this option is specified, it takes the preference.

-D, --dry-run
Test the installation, do not actually install any package. This option will add the --test option to the rpm commands run by the install command.
Download-and-install mode options:
-d, --download-only
Only download the packages for later installation.
--download-in-advance
First download all packages, ten start installing.
--download-in-heaps
TODO. Download a minimal set of packages that can be installed without leaving the system in broken state, and install them. Then download and install another heap until all are installed. This helps to keep the system in consistent state without the need to download all package in advance, which combines the advantages of --download-in-advance and --download-as-needed.
--download-as-needed
Download one package, install it immediately, and continue with the rest until all are installed. This is the default mode.
--download <mode>
Use the specified download-and-install mode. Available modes are: only, in-advance, in-heaps, as-needed. See corresponding --download-<mode> options for their description.

More examples:
Install lamp_server pattern: $ zypper install -t pattern lamp_server

Install GhostScript viewer, but ignore recommended packages: $ zypper install --no-recommends gv

Install version 2.0.6 of virtualbox-ose package (any of the following): $ zypper install virtualbox-ose-2.0.6 $ zypper install virtualbox-ose=2.0.6 $ zypper install virtualbox-ose = 2.0.6

source-install (si) <name> ...
Install specified source packages and their build dependencies.

This command will try to find the newest available versions of the source packages and use rpm -i to install them and the packages that are required to build the source package.

Note that the source packages must be available in repositories you are using. You can check whether a repository contains any source packages using the following command:

$ zypper search -t srcpackage -r <alias|name|#|URI>

-d, --build-deps-only
Install only build dependencies of specified packages.
-D, --no-build-deps
Don't install build dependencies.
-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
Examples:
Install build dependencies of dbus-1 source package: $ zypper si -d dbus-1

verify (ve) [options]
Check whether dependencies of installed packages are satisfied.

In case that any dependency problems are found, zypper suggests packages to install or remove to fix them.

--no-recommends
By default, zypper installs also packages recommended by the requested ones (the ones needed to fix broken dependencies in this case). This option causes the recomended packages to be ignored and only the required ones to be installed.
-D, --dry-run
Test the repair, do not actually do anything to the system.
-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--debug-solver
Create solver test case for debugging. See the install command for details.

install-new-recommends (inr) [options]
Install newly added packages recommended by already installed ones. This can typically be used to install language packages recently added to repositories or drivers for newly added hardware.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
-D, --dry-run
Test the installation, do not actually install anything.
--debug-solver
Create solver test case for debugging. See the install command for details.
This command also accepts the download-and-install mode options described
in the install command description.

remove (rm) [options] <name> ...
remove (rm) [options] --capability <capability> ...
Remove (uninstall) packages.

The packages can be selected by their name or by a capability they provide. For details on package selection see the install command description.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
-t, --type <type>
Type of package (default: package). See section Package Types for list of available package types.

Since patches are not installed in sense of copying files or recording a database entry, they cannot be uninstalled, even though zypper shows them as installed. The installed status is determined solely based on the installed status of its required dependencies. If these dependencies are satisified, the patch is rendered installed.

Uninstallation of patterns is currently not implemented.

-n, --name Select packages by their name (default).
-C, --capability
Select packages by capabilities.
--debug-solver
Create solver test case for debugging. See the install command for details.
-R, --no-force-resolution
Do not force the solver to find a solution. Instead, report dependency problem and prompt the user to resolve it manually.
--force-resolution
Force the solver to find a solution, even if it would mean removing all packages with unfulfilled requirements.

The default behavior is 'force' in the interactive mode and 'no-force' in the non-interactive mode. If this option is specified, it takes the preference.

-D, --dry-run
Test the removal of packages, do not actually remove anything. This option will add the --test option to the rpm commands run by the remove command.

Update Management Commands

list-updates (lu) [options]
List available updates.

This command will list only installable updates, i.e. updates which have no dependency problems, or which do not change package vendor. This list is what the update command will propose to install. To list all packages for which newer version are available, use --all option.

-t, --type <type>
Type of package (default: package). See section Package Types for list of available package types.

If patch is specified, zypper acts as if the list-patches command was executed.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
-a, --all List all packages for which newer versions are available, regardles whether they are installable or not.
--best-effort
See the update command for description.

update (up) [options] [packagename] ...
Update installed packages with newer versions, where possible.

This command will not update packages which would require change of package vendor unless the vendor is specified in /etc/zypp/vendors.d, or which would require manual resolution of problems with dependencies. Such non-installable updates will then be listed in separate section of the summary as "The following package updates will NOT be installed:".

To update individual packages, specify one or more package names. You can use the '*' and '?' wildcard characters in the package names to specify multiple packages matching the pattern.

-t, --type <type>
Type of package (default: package). See section Package Types for list of available package types.

If patch is specified, zypper acts as if the patche command was executed.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--skip-interactive
This will skip interactive patches, that is, those that need reboot, contain a message, or update a package whose license needs to be confirmed.
-l, --auto-agree-with-licenses
Automatically say 'yes' to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.
--debug-solver
Create solver test case for debugging. See the install command for details.
--no-recommends
By default, zypper installs also packages recommended by the requested ones. This option causes the recomended packages to be ignored and only the required ones to be installed.
-R, --no-force-resolution
Do not force the solver to find a solution. Instead, report dependency problem and prompt the user to resolve it manually.
--force-resolution
Force the solver to find a solution, even if it would mean removing all packages with unfulfilled requirements.

The default behavior is 'no-force'. If this option is specified, it takes the preference.

-D, --dry-run
Test the update, do not actually install or update any package. This option will add the --test option to the rpm commands run by the update command.
--best-effort
Do a 'best effort' approach to update. This method does not explicitly select packages with best version and architecture, but instead requests installation of a package with higher version than the installed one and leaves the rest on the dependency solver. This method is always used for packages, and is optional for products and patterns. It is not applicable to patches.
This command also accepts the download-and-install mode options described
in the install command description.

list-patches (lp) [options]
List all available needed patches.

This command is similar to 'zypper list-updates -t patch'.

Note that since the arguments of some of the following options are not required, they must be specified using '=' instead of a space.

-b, --bugzilla[=#]
List available needed patches for all Bugzilla issues, or issues whose number matches the given string.
--cve[=#]
List available needed patches for all CVE issues, or issues whose number matches the given string.
--issues[=string]
Look for issues whose number, summary, or description matches the specified string. Issues found by number are displayed separately from those found by descriptions. In the latter case, use zypper patch-info <patchname> to get information about issues the patch fixes.
-a, --all By default, only patches that are relevant and needed on your system are listed. This option causes all available released patches to be listed. This option can be combined with all the rest of the list-updates command options.
-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.

patch-check (pchk)
Check for patches. Displays a count of applicable patches and how many of them have the security category.
See also the EXIT CODES section for details on exit status of 0, 100, and 101 returned by this command.
-r, --repo <alias|name|#|URI>
Check for patches only in the repository specified by the alias, name, number, or URI. This option can be used multiple times.

patch [options]
Install all available needed patches.

If there are patches that affect the package management itself, those will be installed first and you will be asked to run the patch command again.

This command is similar to 'zypper update -t patch'.

-b, --bugzilla <#>
Install patch fixing a Bugzilla issue specified by number. Use list-patches --bugzilla command to get a list of available needed patches for specific issues.
--cve <#>
Install patch fixing a MITRE's CVE issue specified by number. Use list-patches --cve command to get a list of available needed patches for specific issues.
-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--skip-interactive
Skip interactive patches.
--with-interactive
Avoid skipping of interactive patches when in non-interactive mode.
-l, --auto-agree-with-licenses
See the update command for description of this option.
--no-recommends
By default, zypper installs also packages recommended by the requested ones. This option causes the recomended packages to be ignored and only the required ones to be installed.
--debug-solver
Create test case for debugging of dependency resolver.
-D, --dry-run
Test the update, do not actually update.
This command also accepts the download-and-install mode options described
in the install command description.

dist-upgrade (dup) [options]
Perform a distribution upgrade. This command applies the state of (specified) repositories onto the system; upgrades (or even downgrades) installed packages to versions found in repositories, removes packages that are no longer in the repositories and pose a dependency problem for the upgrade, handles package splits and renames, etc.

If no repositories are specified via --from or --repo options, zypper will do the upgrade with all defined repositories. This can be a problem if the system contains conflicting repositories, like repositories for two different distribution releases. This often happens if one forgets to remove older release repository after adding a new one, say openSUSE 11.1 and openSUSE 11.2.

To avoid the above trouble, you can specify the repositories from which to do the upgrade using the --from or --repo options. The difference between these two is that when --repo is used, zypper acts as if it knew onle the specified repositories, while with --from zypper can eventually use also the rest of enabled repositories to satisfy package dependencies.

--from <alias|name|#|URI>
Restricts the upgrade to the specified repositories (the option can be used multiple times) only, but can satisfy dependencies also from the rest of enabled repositories.
-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
-l, --auto-agree-with-licenses
Automatically say 'yes' to third party license confirmation prompt. By using this option, you choose to agree with licenses of all third-party software this command will install. This option is particularly useful for administators installing the same set of packages on multiple machines (by an automated process) and have the licenses confirmed before.
--no-recommends
By default, zypper installs also packages recommended by the requested ones. This option causes the recomended packages to be ignored and only the required ones to be installed.
--debug-solver
Create solver test case for debugging. See the install command for details.
-D, --dry-run
Test the upgrade, do not actually install or update any package. This option will add the --test option to the rpm commands run by the dist-upgrade command.
This command also accepts the download-and-install mode options described
in the install command description.
Examples:
Upgrade the system using 'factory' and 'packman' repository: $ zypper install zypper libzypp $ zypper dup -r factory -r packman

Query Commands

search (se) [options] [querystring] ...
Search for packages matching given strings. * (any substring) and ? (any character) wildcards can also be used within search strings.

Results of search are printed in a table with following columns: S (status), Catalog, Type (type of package), Name, Version, Arch (architecture). The status column can contain the following values: i - installed, v - another version installed, or an empty space for neither of the former cases.

The 'v' status is only shown if the version or the repository matters (--details or --repo is used), and the installed version differs from the one listed or is from a repository other than specified.

This command accepts the following options:

--match-all
Search for a match to all search strings (default).
--match-any
Search for a match to any of the search strings.
--match-substrings
Matches for search strings may be partial words (default).
--match-words
Matches for search strings may only be whole words.
--match-exact
Searches for an exact name of the package.
-d, --search-descriptions
Search also in summaries and descriptions.
-C, --case-sensitive
Perform case-sensitive search.
-i, --installed-only
Show only packages that are already installed.
-u, --uninstalled-only
Show only packages that are not currently installed.
-t, --type <type>
Search only for packages of specified type. See section Package Types for list of available package types. Multiple -t option are allowed.

See also the type-specific query commands like packages, patterns, etc.

-r, --repo <alias|name|#|URI>
Work only with the repository specified by the alias, name, number, or URI. This option can be used multiple times.
--sort-by-name
Sort packages by name (default).
--sort-by-repo
Sort packages by catalog, not by name.
-s, --details
Show all available versions of found packages, each version in each repository on a separate line.
Examples:
Search for YaST packages (quote the string to prevent the shell from expanding the wildcard): $ zypper se 'yast*'

Show all available versions of package 'kernel-default': $ zypper se -s --match-exact kernel-default

Look for RSI acronym (case-sensitively), also in summaries and descriptions: $ zypper se -dC --match-words RSI

packages (pa) [options] [repository] ...
List all available packages or all packages from specified repositories. Similar to zypper search -s -t package.
-r, --repo <alias|name|#|URI>
Just another means to specify repositories.
-i, --installed-only
Show only installed packages.
-u, --uninstalled-only
Show only packages which are not installed.

patches (pch) [options] [repository] ...
List all available patches from specified repositories, including those not needed. Similar to zypper search -s -t patch.
-r, --repo <alias|name|#|URI>
Just another means to specify repositories.

patterns (pt) [options] [repository] ...
List all available patterns or all patterns from specified repositories. Similar to zypper search -s -t pattern.
-r, --repo <alias|name|#|URI>
Just another means to specify repositories.
-i, --installed-only
Show only installed patterns.
-u, --uninstalled-only
Show only patterns which are not installed.

products (pd) [options] [repository] ...
List all available products or all products from specified repositories. Similar to zypper search -s -t product, but shows also the type of the product (base, add-on).
-r, --repo <alias|name|#|URI>
Just another means to specify repositories.
-i, --installed-only
Show only installed products.
-u, --uninstalled-only
Show only products which are not installed.

what-provides (wp) <capability>
List all packages providing the specified capability. See also the install command for hint about capabilities.

Repository Management

Zypper is able to work with YaST, RPM-MD (yum) software repositories, and plain directories containing .rpm files.

Repositories are primarily identified using their URI or alias. Alias serves as a shorthand for the long URI or name of the repository. The name of the repository should briefly describe the repository and is shown to the user in tables and messages. The name is not required, and if not known, the alias is shown instead. The alias is required and uniquely identifies the repository on the system.

The alias, name, URI, or the number from zypper repos list can be used to specify a repository as an argument of various zypper commands and options like refresh, --repo, or --from.

Apart from the above, repositories have several other properties which can be set using the commands described in this section below, or by manually editing the repository definition files (.repo files, see section FILES).

addrepo (ar) [options] <URI> <alias>
addrepo (ar) [options] <FILE.repo>
Add a new repository specified by URI and assign specified alias to it or specify URI to a .repo file.

Newly added repositories have auto-refresh disabled by default (except for repositories imported from a .repo, having the auto-refresh enabled). To enable auto-refresh, use the --refresh option of the modifyrepo command.

Also, this command does not automatically refresh the newly added repositories. The repositories will get refreshed when used for the first time, or you can use the refresh command after finishing your modifications with *repo commands. See also METADATA REFRESH POLICY section for more details.

-r, --repo <file.repo>
Read URI and alias from specified .repo file
-t, --type <type>
Type of repository (yast2, rpm-md, or plaindir). There are several aliases defined for these types: yast2 - susetags, yast, YaST, YaST2, YAST; rpm-md - repomd, rpmmd, yum, YUM; plaindir - Plaindir.
-d, --disable
Add the repository as disabled. Repositories are added as enabled by default.
-c, --check
Probe given URI.
-C, --nocheck
Don't probe URI, probe later during refresh.
-n, --name Specify descriptive name for the repository.
-k, --keep-packages
Enable RPM files caching for the repository.
-K, --no-keep-packages
Disable RPM files caching.
-f, --refresh
Enable autorefresh of the repository. The autorefresh is disabled by default when adding new repositories.
Examples:
Add an HTTP repository, probe it, name it 'Packman 11.1 repo', and use 'packman' as alias: $ zypper ar -c -n 'Packman 11.1 repo' http://packman.iu-bremen.de/suse/11.1 packman

Add repositories from a repo file: $ zypper ar http://download.opensuse.org/repositories/zypp:/svn/openSUSE_Factory/zypp:svn.repo $ zypper ar myreposbackup.repo

removerepo (rr) [options] <alias|name|#|URI> ...
Delete repositories specified by aliases, names, numbers or URIs.
--loose-auth
Ignore user authentication data in the URI
--loose-query
Ignore query string in the URI

repos (lr) [options] [repo] ...
List all defined repositories or show detailed information about those specified as arguments
If no arguments are given, the following data are printed for each repository found on the sytem: # (repository number), Enabled (whether the repository is enabled), Refresh (whether auto-refresh is enabled for the repository), Type (rpm-md, yast2, plaindir), Alias (shorthand for Name), and Name. Other columns can be added using the options listed below.

Repository number is a unique identifier of the repository in current set of repositories. If you add, remove or change a repository, the numbers may change. Keep that in mind when using the numbers with the repository handling commands. On the other hand, using the alias instead of the number is always safe.

To show detailed information about specific repositories, specify them as arguments, either by alias, name, number from simple zypper lr, or by URI; e.g. fB zypper lr factory, or zypper lr 2.

-e, --export <FILE.repo|->
This option causes zypper to write repository definition of all defined repositories into a single file in repo file format. If '-' is specified instead of a file name, the repositories will be written to the standard output.
-u, --uri Add base URI column to the output.
-p, --priority
Add repository priority column to the output.
-d, --details
Show more information like URI, priority, type, etc.
-U, --sort-by-uri
Add base URI column and sort the list it.
-P, --sort-by-priority
Add repository priority column and sort the list by it.
-A, --sort-by-alias
Sort the list by alias.
-N, --sort-by-name
Sort the list by name.
Examples:
Backup your repository setup: $ zypper repos -e myreposbackup.repo

List repositories with their URIs and priorities: $ zypper lr -pu

renamerepo (nr) <alias|name|#|URI> <new-alias>
Assign new alias to the repository specified by alias, name, number, or URI.
Example:
Rename repository number 8 to 'myrepo' (useful if the repo has some dreadful alias which is not usable on the command line). $ zypper nr 8 myrepo

modifyrepo (mr) <options> <alias|name|#|URI> ...
modifyrepo (mr) <options> <--all|--remote|--local|--medium-type>
Modify properties of repositories specified by alias, name, number, or URI or one of the aggregate options.
-e, --enable
Enable the repository.
-d, --disable
Disable the repository.
-r, --refresh
Enable auto-refresh for the repository.
-R, --no-refresh
Disable auto-refresh for the repository.
-p, --priority <positive-integer>
Set priority of the repository. Priority of 1 is the highest, the higher the number the lower the priority. Default priority is 99. Packages from repositories with higher priority will be preferred even in case there is a higher installable version available in the repository with a lower priority.
-n, --name Set a descriptive name for the repository.
-k, --keep-packages
Enable RPM files caching.
-K, --no-keep-packages
Disable RPM files caching.
-a, --all Apply changes to all repositories.
-l, --local
Apply changes to all local repositories.
-t, --remote
Apply changes to all remote repositories (http/https/ftp).
-m, --medium-type <type>
Apply changes to repositories of specified type. The type corresponds to the repository URI scheme identifier like http, dvd, etc. You can find complete list of valid types at http://en.opensuse.org/Libzypp/URI.
Examples:
Enable keeping of packages for all remote repositories: $ zypper mr -kt

Enable repository 'updates' and switch on autorefresh for the repo: $ zypper mr -er updates

Disable all repositories: $ zypper mr -da

refresh (ref) [alias|name|#|URI] ...
Refresh repositories specified by their alias, name, number, or URI. If no repositories are specified, all enabled repositories will be refreshed.
See also METADATA REFRESH POLICY section for more details.
-f, --force
Force a complete refresh of specified repositories. This option will cause both the download of raw metadata and parsing of the metadata to be forced even if everything indicates a refresh is not needed.
-b, --force-build
Force only reparsing of cached metadata and rebuilding of the database. Raw metadata download will not be forced.
-d, --force-download
Force only download of current copy of repository metadata. Parsing and rebuild of the database will not be forced.
-B, --build-only
Only parse the metadata and build the database, don't download raw metadata into the cache. This will enable you to repair damaged database from cached data without accessing network at all.
-D, --download-only
Only download the raw metadata, don't parse it or build the database.
-s, --services
Refresh also services before refreshing repositories.

clean (cc) [options] [alias|name|#|URI] ...
Clean the local caches for all known or specified repositories. By default, only caches of downloaded packages are cleaned.
-m, --metadata
Clean repository metadata cache instead of package cache.
-M, --raw-metadata
Clean repository raw metadata cache instead of package cache.
-a, --all Clean both repository metadata and package caches.

Service Management

The services, addservice, removeservice, modifyservice, and refresh-services commands serve for manipulating services. A service is specified by its URI and needs to have a unique alias defined (among both services and repositories).

Standalone repositories (not belonging to any service) are treated like services, too. The ls command will list them, ms command will modify them, etc. Repository specific options, like --keep-packages are not available here, though. You can use repository handling commands to manipulate them.

addservice (as) [options] <URI> <alias>
Adds a service specified by URI to the system. The alias must be unique and serves to identify the service.

Newly added services are not refereshed automatically. Use the refresh-services command to refresh them. Zypper does not access the service URI when adding the service, so the type of the services is unknown until it is refreshed.

This command also allows to add also ordinary repositories when used with --type option, where you specify the type of the repository. See the addrepo command for the list of supported repository types.

-t, --type <TYPE>
Type of the service (possible values: ris). There are several aliases defined for this type: ris - RIS, nu, NU
-d, --disable
Add the service as disabled.
-n, --name Specify descriptive name for the service.

removeservice (rs) [options] <alias|name|#|URI> ...
Remove specified repository index service from the sytem.

Removing an RIS service will result in removing of all of its repositories.

--loose-auth
Ignore user authentication data in the URI.
--loose-query
Ignore query string in the URI.

modifyservice (ms) <options> <alias|name|#|URI>
modifyservice (ms) <options> <--all|--remote|--local|--medium-type> Modify properties of specified services.

Common Options
These options are common to all types of services and repositories.
-d, --disable
Disable the service (but don't remove it).
-e, --enable
Enable a disabled service.
-r, --refresh
Enable auto-refresh of the service.
-R, --no-refresh
Disable auto-refresh of the service.
-n, --name Set a descriptive name for the service.
-a, --all Apply changes to all services.
-l, --local
Apply changes to all local services.
-t, --remote
Apply changes to all remote services.
-m, --medium-type <type>
Apply changes to services of specified type.

RIS Service Specific Options
These options are ignored by services other than Repository Index Services.

-i, --ar-to-enable <alias>
Schedule an RIS service repository to be enabled at next service refresh.
-I, --ar-to-disable <alias>
Schedule an RIS service repository to be disabled at next service refresh.
-j, --rr-to-enable <alias>
Remove a RIS service repository to enable.
-J, --rr-to-disable <alias>
Remove a RIS service repository to disable.
-k, --cl-to-enable
Clear the list of RIS repositories to enable.
-K, --cl-to-disable
Clear the list of RIS repositories to disable.

services (ls) [options]
List services defined on the system.

-u, --uri Show also base URI of repositories.
-p, --priority
Show also repository priority.
-d, --details
Show more information like URI, priority, type.
-r, --with-repos
Show also repositories belonging to the services.
-P, --sort-by-priority
Sort the list by repository priority.
-U, --sort-by-uri
Sort the list by URI.
-N, --sort-by-name
Sort the list by name.

refresh-services (refs) [options] <alias|name|#|URI> ...
Refreshing a service mean executing the service's special task.

RIS services add, remove, or modify repositories on your system based on current content of the repository index. Services only manage defined repositories, they do not refresh them. To refresh also repositories, use --with-repos option or the refresh command.

-r, --with-repos
Refresh also repositories.

TODO more info

Package Locks Management

Package locks serve the purpose of preventing changes to the set of installed packages on the system. The locks are stored in form of a query in /etc/zypp/locks file (see also locks(5)). Packages matching this query are then forbidden to change their installed status; an installed package can't be removed, not installed package can't be installed. When requesting to install or remove such locked package, you will get a dependency problem dialog.

locks (ll)
List currently active package locks.

addlock (al) [options] <package-name> ...
Add a package lock. Specify packages to lock by exact name or by a glob pattern using '*' and '?' wildcard characters.

-r, --repo <alias|name|#|URI>
Restrict the lock to the specified repository.
-t, --type <type>
Lock only packages of specified type (default: package). See section Package Types for list of available package types.

removelock (rl) [options] <lock-number|package-name> ...
Remove specified package lock. Specify the lock to remove by its number obtained with zypper locks or by the package name.

-r, --repo <alias|name|#|URI>
Restrict the lock to the specified repository.

cleanlocks (cl)
Remove unused locks.

This command looks for locks that do not currently (with regard to repositories used) lock any package and for each such lock it asks user whether to remove it.

Other Commands

versioncmp (vcmp) <version1> <version2>
Compare the versions supplied as arguments and tell whether version1 is older or newer than version2 or the two version strings match.

The default output is in human-friendly form. If --terse global option is used, the result is an integer number, negative/positive if version1 is older/newer than version2, zero if they match.

-m, --match
Takes missing release number as any release. For example $ zypper vcmp -m 0.15.3 0.15.3-2 0.15.3 matches 0.15.3-2 $ zypper vcmp 0.15.3 0.15.3-2 0.15.3 is older than 0.15.3-2

targetos (tos)
Shows the ID string of the target operating system. The string has a form of distroname-arch. The string is determined by libzypp, the distroname is read from <current-rootdir>/etc/products.d/baseproduct and the architecture is determined from uname and CPU flags.

licenses
Prints a report about licenses and EULAs of installed packages to standard output.

First, a list of all packages and their licenses and/or EULAs is shown. This is followed by a summary, including the total number of installed packages, the number of installed packages with EULAs that required a confirmation from the user. Since the EULAs are not stored on the system and can only be read from repository metadata, the summary includes also the number of installed packages that have their counterpart in repositories. The report ends with a list of all licenses uses by the installed packages.

This command can be useful for companies redistributiong a custom distribution (like appliances) to figure out what licenses they are bound by.

ps After each upgrade or removal of packages, there may be running processes on the system which then use files meanwhile deleted by the upgrade. zypper ps lists these processes, together with the corresponding deleted files, and a service name hint, in case it's a known service. The list contains the following information:

* PID ID of the process * PPID ID of the parent process * UID ID of the user running the process * Login login name of the user running the process * Command command used to execute the process * Service guessed name of the service. If an init script exists for this service, you can do "rcservicename restart" to restart it. * Files the list of the deleted files

GLOBAL OPTIONS


-h, --help Help. If a command is specified together with --help option, command specific help is displayed.
-V, --version
Print zypper version number and exit.
-c, --config <file>
Use specified config file instead of the default files. Other command line options specified together with --config and having their counterpart in the config file are still prefered. The order of preference with --config is as follows:

* Command line options * --config <file> * /etc/zypp/zypp.conf

See also FILES section for more information.

-v, --verbose
Increase verbosity. For debugging output specify this option twice.
-q, --quiet
Suppress normal output. Brief (esp. result notification) messages and error messages will still be printed, though. If used together with conflicting --verbose option, the --verbose option takes preference.
-A, --no-abbrev
Do not abbreviate text in tables. By default zypper will try to abbreviate texts in some columns so that the table fits the width of the screen. If you need to see the whole text, use this option.
-t, --terse
Terse output for machine consumption. Currently not used and provided only for compatibility with rug.
-s, --table-style
Specifies table style to use. Table style is identified by an integer number. TODO
-r, --rug-compatible
Turns on rug compatibility. See section COMPATIBILITY WITH RUG for details.
-n, --non-interactive
Switches to non-interactive mode. In this mode zypper doesn't ask user to type answers to various prompts, but uses default answers automatically. The behaviour of this option is somewhat different than that of options like '--yes', since zypper can answer different answers to different questions. The answers also depend on other options like '--no-gpg-checks'.
-x, --xmlout
Switches to XML output. This option is useful for scripts or graphical frontends using zypper. For detailed information about this feature, see http://en.opensuse.org/Zypper/XML_Output.
-D, --reposd-dir <dir>
Use the specified directory to look for the repository definition (*.repo) files. The default value is /etc/zypp/repos.d.
-C, --cache-dir <dir>
Use an alternative directory to look for the repository metadata cache database files (solv files). The default value is /var/cache/zypp/solv.
--raw-cache-dir <dir>
Use the specified directory for storing raw copies of repository metadata files. The default value is /var/cache/zypp/raw.
Repository Options:
--no-gpg-checks
Ignore GPG check failures and continue. If a GPG issue occurs when using this option zypper prints and logs a warning and automatically continues without interrupting the operation. Use this option with caution, as you can easily overlook security problems by using it.
--gpg-auto-import-keys
If new repository signing key is found, do not ask what to do; trust and import it automatically. This option causes that the new key is imported also in non-interactive mode, where it would otherwise got rejected.
-p, --plus-repo <URI>
Use an additional repository for this operation. The repository aliased tmp# and named by the specified URI will be added for this operation and removed at the end. You can specify this option multiple times.
--disable-repositories
Do not read metadata from repositories. This option will prevent loading of packages from repositories, thus making zypper work only with the installed packages (if --disable-system-resolvables was not specified).
--no-refresh
Do not auto-refresh repositories (ignore the auto-refresh setting). Useful to save time when doing operations like search, if there is not a need to have a completely up to date metadata.
--no-cd Ignore CD/DVD repositories. When this option is specified, zypper acts as if the CD/DVD repositories were not defined at all.
--no-remote
Ignore remote repositories like http, ftp, smb and similar. This makes using zypper easier when being offline. When this option is specified, zypper acts as if the remote repositories were not defined at all.
Target Options:
-R, --root <dir>
Operates on a different root directory. This option influences the location of the repos.d directory and the metadata cache directory and also causes rpm to be run with the --root option to do the actual installation or removal of packages. Note that the ZYpp lock is still created in the original system, as well as temporary files. See also the FILES section.
--disable-system-resolvables
This option serves mainly for testing purposes. It will cause zypper to act as if there were no packages installed in the system. Use with caution as you can damage your system using this option.

FILES


/etc/zypp/zypper.conf, $HOME/.zypper.conf
Global (system-wide) and user's configuration file for zypper. These files are read when zypper starts up and --config option is not used.

User's settings are prefered over global settings. Similarly, command line options override the settings in either of these files. Settings from zypp.conf (see below) having their counterparts in zypper.conf are overriden by zypper's values. To sum it up, the order of preference is as follows (from highest to lowest):

* Command line options
* $HOME/.zypper.conf
* /etc/zypp/zypper.conf
* /etc/zypp/zypp.conf

See the comments in /etc/zypp/zypper.conf for a list and description of available options.

/etc/zypp/zypp.conf
ZYpp configuration file affecting all ZYpp-based applications. See the comments in the file for desciption of configurable properties. Many of locations of files and directories listed in this section are also configurable via zypp.conf.

Options having their counterpart in zypper.conf are overriden by zypper's setting.

/etc/zypp/locks
File with package lock definitions, see locks(5) manual page for details. The package lock commands (addlock, removelock, etc.) can be used to manipulate this file.

This file is used by all ZYpp-based applications.

/etc/zypp/repos.d
Directory containing repository definition (*.repo) files. You can use the Repository Management commands to manipulate these files, or you can edit them yourself. In either case, after doing the modifications, executing zypper refresh is strongly recommended.

This directory is used by all ZYpp-based applications.

You can use the --reposd-dir global option to use an alternative directory for this purpose or the --root option to make this directory relative to the specified root directory.

/etc/zypp/services.d
Directory containing service definition (*.service) files. You can use the Service Management Commands to manipulate theese files, or you can edit them youself. Running zypper refs is recommended after modifications have been done.

This directory is used by all ZYpp-based applications.

/var/cache/zypp/raw
Directory for storing raw metadata contained in repositories. This directory is used by all ZYpp-based applications. Use the --raw-cache-dir global option to use an alternative directory for this purpose or the --root option to make this directory relative to the specified root directory.
/var/cache/zypp/solv
Directory containing preparsed metadata in form of solv files. This directory is used by all ZYpp-based applications.
/var/cache/zypp/packages
If keeppackages property is set for a repository (see the modifyrepo command), all the RPM file downloaded during installation will be kept here. See also the clean command for cleaning these cache directories.

This directory is used by all ZYpp-based applications.

/var/log/zypp/history
Installation history log.
~/.zypper_history
Command history for the shell.

EXIT CODES


There are several exit codes defined for zypper for use e.g. within scripts. These codes are defined in header file src/zypper-main.h found in zypper source package. Codes from interval (1-5) denote an error, numbers (100-105) provide a specific information, 0 represents a normal successful run. Following is a list of these codes with descriptions.

0 - ZYPPER_EXIT_OK
Successfull run of zypper with no special info.
1 - ZYPPER_EXIT_ERR_BUG
Unexpected situation occured, probably caused by a bug.
2 - ZYPPER_EXIT_ERR_SYNTAX
zypper was invoked with an invalid command or option, or a bad syntax.
3 - ZYPPER_EXIT_ERR_INVALID_ARGS
Some of provided arguments were invalid. E.g. an invalid URI was provided to the addrepo command.
4 - ZYPPER_EXIT_ERR_ZYPP
A problem reported by ZYPP library. E.g. another instance of ZYPP is running.
5 - ZYPPER_EXIT_ERR_PRIVILEGES
User invoking zypper has insufficient privileges for specified operation.
100 - ZYPPER_EXIT_INF_UPDATE_NEEDED
Returned by the patch-check command if there are patches available for installation.
101 - ZYPPER_EXIT_INF_SEC_UPDATE_NEEDED
Returned by the patch-check command if there are security patches available for installation.
102 - ZYPPER_EXIT_INF_REBOOT_NEEDED
Returned after a successfull installation of a patch which requires reboot of computer.
103 - ZYPPER_EXIT_INF_RESTART_NEEDED
Returned after a successfull installation of a patch which requires restart of the package manager itself. This means that one of patches to be installed affects the package manager itself and the command used (e.g. zypper update) needs to be executed once again to install any remaining patches.
104 - ZYPPER_EXIT_INF_CAP_NOT_FOUND
Returned by the install and the remove command in case any of the arguments does not match any of the available (or installed) package names or other capabilities.
105 - ZYPPER_EXIT_ON_SIGNAL
Returned upon exiting after receiving a SIGINT or SIGTERM.

COMPATIBILITY WITH RUG


zypper is designed to be compatible with rug, which is a command-line interface to the ZENworks Linux Management (ZLM) agent. Compared to rug, zypper does not need the ZLM daemon to run, and is intented to provide more and improved functionality. Following is a list of zypper-rug command aliases, supported rug command line options, and compatibility notes. See also compatibility notes in descriptions of zypper commands.

To enable rug-compatible behavior, use the -r or --rug-compatible global option with each command.

Service Management Commands

ZENworks uses different terminology than ZYpp. ZLM services are ZYpp's repositories and services. Additionally some ZLM services can contain catalogs (rpmmd-type repositories in ZYpp speak).

Zypper tries to mimick rug's behavior in its service handling commands when used with the -r global option. It also supports the --catalog option for specifying catalogs to work with in current operation (this is an alias for zypper's --repo option).

rug service-add (sa)
zypper addservice (as) When used with -r global option, this command probes the type of service or repository at the specified URI, if not explicitly specified. Without -r option the URI is not accessed at all and the URI is added as ZYpp service.

rug service-delete (sd)
zypper removeservice (rs)

rug service-list (sl)
zypper services (ls)

rug catalogs (ca)
zypper repos (lr)
zypper doesn't include 'Enabled' and 'Refresh' columns and prints rug's 'Status' column with values "Active" or "Disabled" instead.

rug subscribe
This command is not implemented in zypper. Enabling zypper repositories is closest to rug's subscription of catalogs. Thus, you can use zypper mr -e <alias|name|#|URI> to enable repositories added by the service. Use zypper lr (or zypper ca) to list available repositories.

rug unsubscribe
See subscribe above, with the difference that -d will be used instead of -e in the zypper mr command.

Package Management Commands

rug install (in)
zypper install (in)
-y, --no-confirm
Don't require user interaction. This option is implemented using zypper's non-interactive mode.
--agree-to-third-party-licenses
This option is an alias to zypper's --auto-agree-with-licenses option.
-R, --force-resolution <on|off>
This option is not available in rug and zypper uses the 'force-resolution' solver mode by default when running in rug-compatible mode. However, it is possible to turn the forcing of resolution off using this option even in rug-compatible mode.
--entire-catalog <catalog>
This option serves for marking all packages from specified catalog for installation. This is achieved by simulating 'zypper in --from <repo> '*''.

rug remove (rm)
zypper remove (rm)
-y, --no-confirm
Don't require user interaction. This option is implemented using zypper's non-interactive mode.
-R, --force-resolution <on|off>
This option is not available in rug and zypper uses the 'force-resolution' solver mode by default when running in rug-compatible mode. However, it is possible to turn the forcing of resolution off using this option even in rug-compatible mode.

rug verify (ve)
zypper verify (ve)
-y, --no-confirm
Don't require user interaction. This option is implemented using zypper's non-interactive mode.

rug update (up) [catalog] ...
zypper update (up) [package] ...
Zypper interprets the update command arguments as repository identifiers in rug-compatibilty mode. The update operation is restricted to the specified repositories.
-y, --no-confirm
Don't require user interaction. This option is implemented using zypper's non-interactive mode.
--agree-to-third-party-licenses
This option is an alias to zypper's --auto-agree-with-licenses option.
-R, --force-resolution <on|off>
This option is not available in rug and zypper uses the 'force-resolution' solver mode by default when running in rug-compatible mode. However, it is possible to turn the forcing of resolution off using this option even in rug-compatible mode.
-d, --downloade-only
This option has currently no effect.
--category
This option has currently no effect.

rug search (se)
zypper search (se)
Instead of the Type column, rug's Bundle column is printed, however, with no contents.
-t, --type In rug compatibility mode the --type option defaults to package. Zypper searches all package types by default.
--sort-by-catalog
Sort packages by catalog, not by name. This option is an alias to zypper's --sort-by-repo option.

Patch Management Commands

rug patch-info
zypper info -t patch

Pattern Management Commands

rug pattern-info
zypper info -t pattern

Product Management Commands

rug product-info
zypper info -t product

System Commands

rug ping
zypper ping
This command just returns 0 without producing any output or doing anything to the system. Rug's ping command is used to wake up the ZLM daemon or to check whether it is up and running. Since zypper does no require ZLM or any other daemon to run, it is safe to always return 0 here to indicate it is ready for operation.

Other Compatibility Notes

-c, --catalog <catalog>
This option is an alias to zypper's --repo <alias> and it will restrict the operation of commands like search, install, etc to the repository specified by the alias.

-N, --dry-run
Zypper uses -D shorthand for this option, but -N is provided for the sake of compatibility. Zypper (libzypp) implements this option by passing the --test option to rpm. The option is used in install, remove, update, dist-upgrade (not available in rug), and verify commands.


Top updates

Bulletin Latest Past week Past month
Google Search


NEWS CONTENTS

Old News ;-)

Bash upgrade using zypper

lusytp27:~ # cat /etc/*release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 3
LSB_VERSION="core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64"
lusytp27:~ # zipper install bash
If 'zipper' is not a typo you can run the following command to lookup the package that contains the binary:
    command-not-found zipper
-bash: zipper: command not found
lusytp27:~ # zypper install bash
Refreshing service 'nu_novell_com'.
Authentication required for 'https://nu.novell.com/?cookies=0&credentials=NCCcredentials'
User Name: bezroukovn
Password:
Authentication required for 'https://nu.novell.com/?cookies=0&credentials=NCCcredentials'
User Name: bezroukovn
Password:
			

Package Management With Zypper Linux Journal

As I've mentioned before I'm an openSUSE user, and as long as they don't make the "U" lower case again, I'll probably stick with it. When it comes to package management, OpenSUSE and SUSE Linux Enterprice (and SuSE before them) are usually associated with YaST (and yes, I'm still waiting for them to upper case the "a"). YaST works well but it's a bit verbose for installing a single package, and of course that's just more fodder for the apt-getters with all their apt-get install this and their apt-get install thats. And you can't argue with them, but there are other options with openSUSE: yum and apt4rpm come to mind, but the preferred solution is zypper.

Zypper is a command line tool for package management, it's based on ZYpp, aka libzypp. The WikiPedia entry for Zypp says:

Unlike other common package managers, it provides a powerful satisfiability solver to compute package dependencies and a convenient package management API.

Since we don't want our heads to explode we'll just take it for granted that a powerful satisfiability solver is a good thing.

It turns out that YaST is also (now) based on ZYpp so you don't need to worry that you're missing out on something by using zypper.

Zypper is fairly straightforward to use. If you want to search for a package do zypper search STRING.... The STRING(s) can include * and ? wildcards and there are options for matching all or any of the strings and for full exact matches (the default is a partial match). If you want to search the package descriptions there's an option for that also. For example to search for packages with the word "mail" in the name or in the description do:

$ zypper search --search-descriptions mail
$ # --search-descriptions can be abbreviated as -d
Reading installed packages...

S | Name                 | Summary                                | Type
--+----------------------+----------------------------------------+-----------
  | Buddi                | Buddi - Personal budget software ...   | package
  | CgEddie              | A simple editor with syntax high ...   | package
  | FrostWire            | Gnutella peer-to-peer (P2P) file ...   | package
  ...
i | yast2-mail           | YaST2 - Mail Configuration             | package
  | yast2-mail-plugins   | YaST2-Users/Group Plugins for the ...  | package
  | yum-updatesd         | YUM update notification daemon         | package

When installing packages with zypper, as you'd expect/hope, zypper takes care of installing the package's dependencies:

$ zypper install Buddi
Reading installed packages...

The following NEW packages are going to be installed:
  BrowserLauncher2 swingx Buddi jcommon jfreechart

Overall download size: 4.1 M. After the operation, additional 5.2 M will be used.
Continue? [YES/no]:

Some of the other interesting commands that zypper supports are:

For a full list of the commands that zypper supports type zypper help and check the man page for more details.

One of Ubuntu's WOW factors seems to be apt-get dist-upgrade, i.e. the ability to upgrade to the next version of Ubuntu (and actually it's a feature of any debian based distro). This is another thing that the apt-getters puff up about, well enter zypper dist-upgrade or zypper dup. This allows you to upgrade from one version of openSUSE to the next. I have not used this feature yet, but posts on the openSUSE wiki seem to indicate that it works well.

So to all you apt-getters out there, all I can say is: zypp it.


Recommended Links

Top Visited

Bulletin Latest Past week Past month
Google Search



http://en.opensuse.org/Zypper

Zypper-Usage-11.2 - openSUSE

Support How to upgrade to SLES-SLED 11 SP3

Support How to upgrade to SLES-SLED 11 SP2



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019