salt.modules.zypper

Package support for openSUSE via the zypper package manager

depends:
  • rpm Python module. Install with zypper install rpm-python

Important

If you feel that Salt should be using this module to manage packages on a minion, and it is using a different module (or gives an error similar to 'pkg.install' is not available), see here.

class salt.modules.zypper.Wildcard(zypper)

New in version 2017.7.0.

Converts string wildcard to a zypper query. .. rubric:: Example

'1.2.3.4*' is '1.2.3.4.whatever.is.here' and is equal to: '1.2.3.4 >= and < 1.2.3.5'

Parameters:ptn -- Pattern
Returns:Query range
salt.modules.zypper.add_lock(packages, **kwargs)

Add a package lock. Specify packages to lock by exact name.

CLI Example:

salt '*' pkg.add_lock <package name>
salt '*' pkg.add_lock <package1>,<package2>,<package3>
salt '*' pkg.add_lock pkgs='["foo", "bar"]'
salt.modules.zypper.clean_locks()

Remove unused locks that do not currently (with regard to repositories used) lock any package.

CLI Example:

salt '*' pkg.clean_locks
salt.modules.zypper.del_repo(repo)

Delete a repo.

CLI Examples:

salt '*' pkg.del_repo alias
salt.modules.zypper.diff(*paths)

Return a formatted diff between current files and original in a package. NOTE: this function includes all files (configuration and not), but does not work on binary content.

Parameters:path -- Full path to the installed file
Returns:Difference string or raises and exception if examined file is binary.

CLI example:

salt '*' pkg.diff /etc/apache2/httpd.conf /etc/sudoers
salt.modules.zypper.download(*packages, **kwargs)

Download packages to the local disk.

refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.

CLI example:

salt '*' pkg.download httpd
salt '*' pkg.download httpd postfix
salt.modules.zypper.file_dict(*packages)

List the files that belong to a package, grouped by package. Not specifying any packages will return a list of every file on the system's rpm database (not generally recommended).

CLI Examples:

salt '*' pkg.file_list httpd
salt '*' pkg.file_list httpd postfix
salt '*' pkg.file_list
salt.modules.zypper.file_list(*packages)

List the files that belong to a package. Not specifying any packages will return a list of every file on the system's rpm database (not generally recommended).

CLI Examples:

salt '*' pkg.file_list httpd
salt '*' pkg.file_list httpd postfix
salt '*' pkg.file_list
salt.modules.zypper.get_repo(repo, **kwargs)

Display a repo.

CLI Example:

salt '*' pkg.get_repo alias
salt.modules.zypper.info_available(*names, **kwargs)

Return the information of the named package available for the system.

refresh
force a refresh if set to True (default). If set to False it depends on zypper if a refresh is executed or not.

CLI example:

salt '*' pkg.info_available <package1>
salt '*' pkg.info_available <package1> <package2> <package3> ...
salt.modules.zypper.info_installed(*names, **kwargs)

Return the information of the named package(s), installed on the system.

Parameters:
  • names -- Names of the packages to get information about.
  • attr --

    Comma-separated package attributes. If no 'attr' is specified, all available attributes returned.

    Valid attributes are:
    version, vendor, release, build_date, build_date_time_t, install_date, install_date_time_t, build_host, group, source_rpm, arch, epoch, size, license, signature, packager, url, summary, description.
  • errors --

    Handle RPM field errors. If 'ignore' is chosen, then various mistakes are simply ignored and omitted from the texts or strings. If 'report' is chonen, then a field with a mistake is not returned, instead a 'N/A (broken)' (not available, broken) text is placed.

    Valid attributes are:
    ignore, report

CLI example:

salt '*' pkg.info_installed <package1>
salt '*' pkg.info_installed <package1> <package2> <package3> ...
salt '*' pkg.info_installed <package1> attr=version,vendor
salt '*' pkg.info_installed <package1> <package2> <package3> ... attr=version,vendor
salt '*' pkg.info_installed <package1> <package2> <package3> ... attr=version,vendor errors=ignore
salt '*' pkg.info_installed <package1> <package2> <package3> ... attr=version,vendor errors=report
salt.modules.zypper.install(name=None, refresh=False, fromrepo=None, pkgs=None, sources=None, downloadonly=None, skip_verify=False, version=None, ignore_repo_failure=False, **kwargs)

Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the salt-minion daemon's control group. This is done to keep systemd from killing any zypper commands spawned by Salt when the salt-minion service is restarted. (see KillMode in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a config option called systemd.scope, with a value of False (no quotes).

Install the passed package(s), add refresh=True to force a 'zypper refresh' before package is installed.

name

The name of the package to be installed. Note that this parameter is ignored if either pkgs or sources is passed. Additionally, please note that this option can only be used to install packages from a software repository. To install a package file manually, use the sources option.

CLI Example:

salt '*' pkg.install <package name>
refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.
fromrepo
Specify a package repository to install from.
downloadonly
Only download the packages, do not install.
skip_verify
Skip the GPG verification check (e.g., --no-gpg-checks)
version
Can be either a version number, or the combination of a comparison operator (<, >, <=, >=, =) and a version number (ex. '>1.2.3-4'). This parameter is ignored if pkgs or sources is passed.
resolve_capabilities
If this option is set to True zypper will take capabilites into account. In this case names which are just provided by a package will get installed. Default is False.

Multiple Package Installation Options:

pkgs

A list of packages to install from a software repository. Must be passed as a python list. A specific version number can be specified by using a single-element dict representing the package and its version. As with the version parameter above, comparison operators can be used to target a specific version of a package.

CLI Examples:

salt '*' pkg.install pkgs='["foo", "bar"]'
salt '*' pkg.install pkgs='["foo", {"bar": "1.2.3-4"}]'
salt '*' pkg.install pkgs='["foo", {"bar": "<1.2.3-4"}]'
sources

A list of RPM packages to install. Must be passed as a list of dicts, with the keys being package names, and the values being the source URI or local path to the package.

CLI Example:

salt '*' pkg.install sources='[{"foo": "salt://foo.rpm"},{"bar": "salt://bar.rpm"}]'
ignore_repo_failure
Zypper returns error code 106 if one of the repositories are not available for various reasons. In case to set strict check, this parameter needs to be set to True. Default: False.
diff_attr:

If a list of package attributes is specified, returned value will contain them, eg.:

{'<package>': {
    'old': {
        'version': '<old-version>',
        'arch': '<old-arch>'},

    'new': {
        'version': '<new-version>',
        'arch': '<new-arch>'}}}

Valid attributes are: epoch, version, release, arch, install_date, install_date_time_t.

If all is specified, all valid attributes will be returned.

New in version Oxygen.

Returns a dict containing the new package names and versions:

{'<package>': {'old': '<old-version>',
               'new': '<new-version>'}}

If an attribute list is specified in diff_attr, the dict will also contain any specified attribute, eg.:

{'<package>': {
    'old': {
        'version': '<old-version>',
        'arch': '<old-arch>'},

    'new': {
        'version': '<new-version>',
        'arch': '<new-arch>'}}}
salt.modules.zypper.latest_version(*names, **kwargs)

Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned.

If the latest version of a given package is already installed, an empty dict will be returned for that package.

refresh
force a refresh if set to True (default). If set to False it depends on zypper if a refresh is executed or not.

CLI example:

salt '*' pkg.latest_version <package name>
salt '*' pkg.latest_version <package1> <package2> <package3> ...
salt.modules.zypper.list_downloaded()

New in version 2017.7.0.

List prefetched packages downloaded by Zypper in the local disk.

CLI example:

salt '*' pkg.list_downloaded
salt.modules.zypper.list_installed_patches()

New in version 2017.7.0.

List installed advisory patches on the system.

CLI Examples:

salt '*' pkg.list_installed_patches
salt.modules.zypper.list_installed_patterns()

List installed patterns on the system.

CLI Examples:

salt '*' pkg.list_installed_patterns
salt.modules.zypper.list_locks()

List current package locks.

Return a dict containing the locked package with attributes:

{'<package>': {'case_sensitive': '<case_sensitive>',
               'match_type': '<match_type>'
               'type': '<type>'}}

CLI Example:

salt '*' pkg.list_locks
salt.modules.zypper.list_patches(refresh=False)

New in version 2017.7.0.

List all known advisory patches from available repos.

refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.

CLI Examples:

salt '*' pkg.list_patches
salt.modules.zypper.list_patterns(refresh=False)

List all known patterns from available repos.

refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.

CLI Examples:

salt '*' pkg.list_patterns
salt.modules.zypper.list_pkgs(versions_as_list=False, **kwargs)

List the packages currently installed as a dict. By default, the dict contains versions as a comma separated string:

{'<package_name>': '<version>[,<version>...]'}
versions_as_list:

If set to true, the versions are provided as a list

{'<package_name>': ['<version>', '<version>']}

attr:

If a list of package attributes is specified, returned value will contain them in addition to version, eg.:

{'<package_name>': [{'version' : 'version', 'arch' : 'arch'}]}

Valid attributes are: epoch, version, release, arch, install_date, install_date_time_t.

If all is specified, all valid attributes will be returned.

New in version Oxygen.

removed:
not supported
purge_desired:
not supported

CLI Example:

salt '*' pkg.list_pkgs
salt '*' pkg.list_pkgs attr='["version", "arch"]'
salt.modules.zypper.list_products(all=False, refresh=False)

List all available or installed SUSE products.

all
List all products available or only installed. Default is False.
refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.

Includes handling for OEM products, which read the OEM productline file and overwrite the release value.

CLI Examples:

salt '*' pkg.list_products
salt '*' pkg.list_products all=True
salt.modules.zypper.list_provides(**kwargs)

New in version Oxygen.

List package provides of installed packages as a dict. {'<provided_name>': ['<package_name>', '<package_name>', ...]}

CLI Examples:

salt '*' pkg.list_provides
salt.modules.zypper.list_repos()

Lists all repos.

CLI Example:

salt '*' pkg.list_repos
salt.modules.zypper.list_upgrades(refresh=True, **kwargs)

List all available package upgrades on this system

refresh
force a refresh if set to True (default). If set to False it depends on zypper if a refresh is executed.

CLI Example:

salt '*' pkg.list_upgrades
salt.modules.zypper.mod_repo(repo, **kwargs)

Modify one or more values for a repo. If the repo does not exist, it will be created, so long as the following values are specified:

repo or alias
alias by which the zypper refers to the repo
url, mirrorlist or baseurl
the URL for zypper to reference
enabled
enable or disable (True or False) repository, but do not remove if disabled.
refresh
enable or disable (True or False) auto-refresh of the repository.
cache
Enable or disable (True or False) RPM files caching.
gpgcheck
Enable or disable (True or False) GOG check for this repository.
gpgautoimport
Automatically trust and import new repository.

Key/Value pairs may also be removed from a repo's configuration by setting a key to a blank value. Bear in mind that a name cannot be deleted, and a url can only be deleted if a mirrorlist is specified (or vice versa).

CLI Examples:

salt '*' pkg.mod_repo alias alias=new_alias
salt '*' pkg.mod_repo alias url= mirrorlist=http://host.com/
salt.modules.zypper.modified(*packages, **flags)

List the modified files that belong to a package. Not specifying any packages will return a list of _all_ modified files on the system's RPM database.

New in version 2015.5.0.

Filtering by flags (True or False):

size
Include only files where size changed.
mode
Include only files which file's mode has been changed.
checksum
Include only files which MD5 checksum has been changed.
device
Include only files which major and minor numbers has been changed.
symlink
Include only files which are symbolic link contents.
owner
Include only files where owner has been changed.
group
Include only files where group has been changed.
time
Include only files where modification time of the file has been changed.
capabilities
Include only files where capabilities differ or not. Note: supported only on newer RPM versions.

CLI Examples:

salt '*' pkg.modified
salt '*' pkg.modified httpd
salt '*' pkg.modified httpd postfix
salt '*' pkg.modified httpd owner=True group=False
salt.modules.zypper.owner(*paths)

Return the name of the package that owns the file. Multiple file paths can be passed. If a single path is passed, a string will be returned, and if multiple paths are passed, a dictionary of file/package name pairs will be returned.

If the file is not owned by a package, or is not present on the minion, then an empty string will be returned for that path.

CLI Examples:

salt '*' pkg.owner /usr/bin/apachectl
salt '*' pkg.owner /usr/bin/apachectl /etc/httpd/conf/httpd.conf
salt.modules.zypper.purge(name=None, pkgs=None, **kwargs)

Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the salt-minion daemon's control group. This is done to keep systemd from killing any zypper commands spawned by Salt when the salt-minion service is restarted. (see KillMode in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a config option called systemd.scope, with a value of False (no quotes).

Recursively remove a package and all dependencies which were installed with it, this will call a zypper -n remove -u

name
The name of the package to be deleted.

Multiple Package Options:

pkgs
A list of packages to delete. Must be passed as a python list. The name parameter will be ignored if this option is passed.

New in version 0.16.0.

Returns a dict containing the changes.

CLI Example:

salt '*' pkg.purge <package name>
salt '*' pkg.purge <package1>,<package2>,<package3>
salt '*' pkg.purge pkgs='["foo", "bar"]'
salt.modules.zypper.refresh_db()

Force a repository refresh by calling zypper refresh --force, return a dict:

{'<database name>': Bool}

CLI Example:

salt '*' pkg.refresh_db
salt.modules.zypper.remove(name=None, pkgs=None, **kwargs)

Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the salt-minion daemon's control group. This is done to keep systemd from killing any zypper commands spawned by Salt when the salt-minion service is restarted. (see KillMode in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a config option called systemd.scope, with a value of False (no quotes).

Remove packages with zypper -n remove

name
The name of the package to be deleted.

Multiple Package Options:

pkgs
A list of packages to delete. Must be passed as a python list. The name parameter will be ignored if this option is passed.

New in version 0.16.0.

Returns a dict containing the changes.

CLI Example:

salt '*' pkg.remove <package name>
salt '*' pkg.remove <package1>,<package2>,<package3>
salt '*' pkg.remove pkgs='["foo", "bar"]'
salt.modules.zypper.remove_lock(packages, **kwargs)

Remove specified package lock.

CLI Example:

salt '*' pkg.remove_lock <package name>
salt '*' pkg.remove_lock <package1>,<package2>,<package3>
salt '*' pkg.remove_lock pkgs='["foo", "bar"]'
salt.modules.zypper.resolve_capabilities(pkgs, refresh, **kwargs)

New in version Oxygen.

Convert name provides in pkgs into real package names if resolve_capabilities parameter is set to True. In case of resolve_capabilities is set to False the package list is returned unchanged.

refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.
resolve_capabilities
If this option is set to True the input will be checked if a package with this name exists. If not, this function will search for a package which provides this name. If one is found the output is exchanged with the real package name. In case this option is set to False (Default) the input will be returned unchanged.

CLI Examples:

salt '*' pkg.resolve_capabilities resolve_capabilities=True w3m_ssl
salt.modules.zypper.search(criteria, refresh=False, **kwargs)

List known packags, available to the system.

refresh
force a refresh if set to True. If set to False (default) it depends on zypper if a refresh is executed.
match (str)
One of exact, words, substrings. Search for an exact match or for the whole words only. Default to substrings to patch partial words.
provides (bool)
Search for packages which provide the search strings.
recommends (bool)
Search for packages which recommend the search strings.
requires (bool)
Search for packages which require the search strings.
suggests (bool)
Search for packages which suggest the search strings.
conflicts (bool)
Search packages conflicting with search strings.
obsoletes (bool)
Search for packages which obsolete the search strings.
file_list (bool)
Search for a match in the file list of packages.
search_descriptions (bool)
Search also in package summaries and descriptions.
case_sensitive (bool)
Perform case-sensitive search.
installed_only (bool)
Show only installed packages.
not_installed_only (bool)
Show only packages which are not installed.
details (bool)
Show version and repository

CLI Examples:

salt '*' pkg.search <criteria>
salt.modules.zypper.upgrade(refresh=True, dryrun=False, dist_upgrade=False, fromrepo=None, novendorchange=False, skip_verify=False, **kwargs)

Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the salt-minion daemon's control group. This is done to keep systemd from killing any zypper commands spawned by Salt when the salt-minion service is restarted. (see KillMode in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a config option called systemd.scope, with a value of False (no quotes).

Run a full system upgrade, a zypper upgrade

refresh
force a refresh if set to True (default). If set to False it depends on zypper if a refresh is executed.
dryrun
If set to True, it creates a debug solver log file and then perform a dry-run upgrade (no changes are made). Default: False
dist_upgrade
Perform a system dist-upgrade. Default: False
fromrepo
Specify a list of package repositories to upgrade from. Default: None
novendorchange
If set to True, no allow vendor changes. Default: False
skip_verify
Skip the GPG verification check (e.g., --no-gpg-checks)

Returns a dictionary containing the changes:

{'<package>':  {'old': '<old-version>',
                'new': '<new-version>'}}

CLI Example:

salt '*' pkg.upgrade
salt '*' pkg.upgrade dist-upgrade=True fromrepo='["MyRepoName"]' novendorchange=True
salt '*' pkg.upgrade dist-upgrade=True dryrun=True
salt.modules.zypper.upgrade_available(name, **kwargs)

Check whether or not an upgrade is available for a given package

refresh
force a refresh if set to True (default). If set to False it depends on zypper if a refresh is executed or not.

CLI Example:

salt '*' pkg.upgrade_available <package name>
salt.modules.zypper.verify(*names, **kwargs)

Runs an rpm -Va on a system, and returns the results in a dict

Files with an attribute of config, doc, ghost, license or readme in the package header can be ignored using the ignore_types keyword argument

CLI Example:

salt '*' pkg.verify
salt '*' pkg.verify httpd
salt '*' pkg.verify 'httpd postfix'
salt '*' pkg.verify 'httpd postfix' ignore_types=['config','doc']
salt.modules.zypper.version(*names, **kwargs)

Returns a string representing the package version or an empty dict if not installed. If more than one package name is specified, a dict of name/version pairs is returned.

CLI Example:

salt '*' pkg.version <package name>
salt '*' pkg.version <package1> <package2> <package3> ...
salt.modules.zypper.version_cmp(ver1, ver2, ignore_epoch=False)

New in version 2015.5.4.

Do a cmp-style comparison on two packages. Return -1 if ver1 < ver2, 0 if ver1 == ver2, and 1 if ver1 > ver2. Return None if there was a problem making the comparison.

ignore_epoch
: False

Set to True to ignore the epoch when comparing versions

New in version 2015.8.10,2016.3.2.

CLI Example:

salt '*' pkg.version_cmp '0.2-001' '0.2.0.1-002'