Tag Archives: Zypper

zypper

zypper(8) System Tools zypper(8)

SYNTAX
zypper [–global-opts] <command> [–command-opts] [command-arguments]

zypper help [command]

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

CONCEPTS
Most of the following concepts are common for all applications based on
the libzypp package management library, but there are some zypper
specifics.

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. Reposito-
ries can be placed on various media like an HTTP or FTP server, DVD, or
a folder on a local disc.

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 exam-
ples.

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 reposito-
ries 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, zyp-
per takes care of adding, modifying, or removing these repositories on
your system to reflect the current list. See section Service Manage-
ment and http://en.opensuse.org/Standards/Repository_Index_Service for
more details.

Package Types
zypper works with several types of resource objects, called resolv-
ables. 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 work only in
search command currently.

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 usu-
ally 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 (opensSUSE 11.0),
but still, you’re welcome to experiment with it.

Package Management Commands
info (if) <name> …
Displays detailed informaion about the specified packages.

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

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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.

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: zypper\>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 architec-
ture 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 ZYP-
PER_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 reposito-
ries. You can install a plain RPM file by specifying its loca-
tion 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 instal-
lation.

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 it’s interpretation as a command
option.

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

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, number or
URI. This option can be used multiple times.

-t, –type <type>
Type of package to install (default: package). See section Pack-
age 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 pack-
ages and patterns it requires are installed. Thus a pattern can
be evalueated as installed even if you do not install the pat-
tern itself, but rather the packages it requries. Use zypper
search -t pattern [name] to look for available patterns and zyp-
per info -t pattern <name> to list its contents.

If patch is specified, zypper will install and/or remove pack-
ages 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 dis-
play 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 capabili-
ties.

-f, –force
Install even if the item is already installed (reinstall)

–from <alias|#|URI>
Select packages from specified repository. If strings specified
as arguments to the install command match packages in reposito-
ries specified in this option, they will be marked for installa-
tion. 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 pro-
cess) 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 ingored 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.

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 fol-
lowing):
$ 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 pack-
ages 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|#|URI>

-d, –build-deps-only
Install only build dependencies of specified packages.

-D, –no-build-deps
Don’t install build dependencies.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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
ingored 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|#|URI>
Work only with the repository specified by the alias, 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 hard-
ware.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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.

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|#|URI>
Work only with the repository specified by the alias, 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 pack-
age vendor. This list is what the update command will propose to
install. To list all packages for which newer version are avail-
able, 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 com-
mand was executed.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, number or
URI. This option can be used multiple times.

-a, –all
List all packages for which newer versions are available, regar-
dles 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.

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|#|URI>
Work only with the repository specified by the alias, 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 pro-
cess) 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 ingored 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 ver-
sion than the installed one and leaves the rest on the depen-
dency solver. This method is always used for packages, and is
optional for products and patterns. It is not applicable to
patches.

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

If there are patches that affect the package management itself,
only those will be listed, and you will be informed if also
other patches are available. After installing the package man-
agement patches, the other needed patches will be listed.

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

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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|#|URI>
Check for patches only in the repository specified by the alias,
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’.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, number or
URI. This option can be used multiple times.

–skip-interactive
Skip interactive patches.

-l, –auto-agree-with-licenses
See the update command for description of this option.

–debug-solver
Create test case for debugging of dependency resolver.

-D, –dry-run
Test the update, do not actually update.

dist-upgrade (dup) [options]
Perform a distribution upgrade. This command performs an update
of all packages with a special resolver algorithm which takes
care of package splits, pattern and product updates, etc.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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 pro-
cess) 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 ingored 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.

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). Status column can contain following values: i –
installed, v – another version installed, or an empty space for
neither of the former cases.

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, pat-
terns, etc.

-r, –repo <alias|#|URI>
Work only with the repository specified by the alias, 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|#|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, includ-
ing those not needed. Similar to zypper search -s -t patch.

-r, –repo <alias|#|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|#|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|#|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, YUM, and aptrpm repositories, ZEN-
works 7 Linux Management, ZENworks 6.6.x Linux Management servers, as
well as local 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 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 sev-
eral 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 dis-
abled 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/reposito-
ries/zypp:/svn/openSUSE_Factory/zypp:svn.repo
$ zypper ar myreposbackup.repo

removerepo (rr) [options] <alias|#|URI> …
Delete repositories specified by aliases, numbers or URIs.

–loose-auth
Ignore user authentication data in the URI

–loose-query
Ignore query string in the URI

repos (lr) [options]
List all defined repositories.

The following data are printed for each repository found: #
(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.

-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|#|URI> <new-alias>
Assign new alias to the repository specified by alias, 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|#|URI>

modifyrepo (mr) <options> <–all|–remote|–local|–medium-type>
Modify properties of the repository specified by alias, 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 corre-
sponds 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|#] …
Refresh repositories specified by their alias or number. 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 dam-
aged 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|#|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 speci-
fied 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 ser-
vices 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|#|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|#|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 reposito-
ries.

-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 ser-
vice 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|#|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 server 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|#|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|#|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 ver-
sion1 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/posi-
tive 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/prod-
ucts.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 num-
ber 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 cus-
tom distribution (like appliances) to figure out what licenses
they are bound by.

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.

-v, –verbose
Increase verbosity. For debugging output specify this option
twice.

-q, –quiet
Suppress normal output. Brief (esp. result notification) mes-
sages 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 defini-
tion (*.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.

-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-resolv-
ables was not specified).

–no-refresh
Do not auto-refresh repositories (ignore the auto-refresh set-
ting). 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, zyp-
per acts as if the CD/DVD repositories were not defined at all.

–no-remote
Ignore remote repositories like http, ftp, smb and similar. When
this option is specified, zypper acts as if the remote reposito-
ries 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 servers mainly for testing purposes. It will cause
zypper to act as if there were no packages installed in the sys-
tem. Use with caution as you can damage your system using this
option.

FILES
/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.

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 rec-
ommended after modifications have been done.

/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.

/etc/zypp/locks
File with package lock definitions, see locks(5) manual page for
details.

/var/cache/zypp/raw
Directory for storing raw metadata contained in repositories.
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.

/var/cache/zypp/packages
If keeppackages property is set for a repository (see the modi-
fyrepo command), all the RPM file downloaded during installation
will be kept here. See also the clean command for cleaning these
cache directories.

/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 avail-
able 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 compati-
bility 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 speci-
fied 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|#|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 imple-
mented 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 servers for marking all packages from speci-
fied catalog for installation. This is achieved by simu-
lating ‘zypper in –from <repo> ‘*”.

rug remove (rm)
zypper remove (rm)

-y, –no-confirm
Don’t require user interaction. This option is imple-
mented 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 imple-
mented 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 imple-
mented 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, how-
ever, 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.

HOMEPAGE
http://en.opensuse.org/Zypper

AUTHORS
Martin Vidner <mvidner@suse.cz>
Duncan Mac-Vicar <dmacvicar@suse.de>
Jan Kupec <jkupec@suse.cz>
Stanislav Visnovsky <visnov@suse.cz>
Josef Reidinger <jreidinger@suse.cz>

SEE ALSO
rug(1), YaST2(8), locks(5)

zypper 1.0.4 zypper(8)

Technorati Tags: ,

Using Zypper

Zypper is a command line package manager, like the famous apt-get for Debian / Ubuntu. I got introduced to zypper by a top OpenSUSE guy, while we tested the 11.1 build 5 a few weeks before it was due. I didn’t get very much from him as his fingers move too quickly and by the time I read zypper on his command line interface, he was already typing his 3rd or 4rth consecutive command. Well feeling rather humbled by the whole experience I decided to give zypper a go once I got OpenSUSE 11.1 installed on my laptop.  It’s a great and intuitive package manager. Here is a short list of the commands you will use the most. (you have to run it as superuser so I will use sudo just before the command)

  • $ sudo zypper se (or search) mysql (to search for the mysql package)
  • $ sudo zypper in (or install) Apache2 (to install the Apache 2 package)
  • $ sudo rm (or remove) mplayer (to remove the mplayer package)
  • $ sudo zypper help  search (look for help on a specific command, in this case the command is Search)
  • $ sudo zypper in yast* (the * inidicates that any package that are related to that package starting with the same name. a good example is installing the libraries for apache2_mod_* )

For a more in-depth tutorial visit the OpenSUSE reference for zypper.

Linux Command Line Interface

Technorati Tags: , , , ,