# zypper – Manage packages on SUSE and openSUSE

- Synopsis
- Requirements
- Parameters
- Notes
- Examples
- Status

## Synopsis

- Manage packages on SUSE and openSUSE using the zypper and rpm tools.

## Requirements

The below requirements are needed on the host that executes this module.

- zypper >= 1.0 # included in openSUSE >= 11.1 or SUSE Linux Enterprise Server/Desktop >= 11.0
- python-xml
- rpm

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---

disable_gpg_check
boolean

Choices:
- no ←
- yes

Whether to disable to GPG signature checking of the package signature being installed. Has an effect only if state is present or latest.

disable_recommends
boolean

Choices:
- no
- yes ←

Corresponds to the `--no-recommends` option for zypper. Default behavior (`yes`) modifies zypper's default behavior; `no` does install recommended packages.

extra_args - added in 2.4 |  | Add additional options to `zypper` command. Options should be supplied in a single line as if given in the command line.
extra_args_precommand - added in 2.6 |  | Add additional global target options to `zypper`. Options should be supplied in a single line as if given in the command line.

force
boolean

Choices:
- no ←
- yes

Adds `--force` option to zypper. Allows to downgrade packages and change vendor or architecture.

name
- / required

Package name `name` or package specifier or a list of either.
Can include a version like `name=1.0`, `name>3.4` or `name<=2.7`. If a version is given, `oldpackage` is implied and zypper is allowed to update the package within the version range given.
You can also pass a url or a local path to a rpm file.
When using state=latest, this can be '*', which updates all installed packages.
aliases: pkg

oldpackage
boolean

Choices:
- no ←
- yes

Adds `--oldpackage` option to zypper. Allows to downgrade packages with less side-effects than force. This is implied as soon as a version is specified as part of the package name.

state
-

Choices:
- present ←
- latest
- absent
- dist-upgrade

`present` will make sure the package is installed. `latest` will make sure the latest version of the package is installed. `absent` will make sure the specified package is not installed. `dist-upgrade` will make sure the latest version of all installed packages from all enabled repositories is installed.
When using `dist-upgrade`, name should be `'*'`.

type
-

Choices:
- package ←
- patch
- pattern
- product
- srcpackage
- application

The type of package to be operated on.

update_cache
boolean

Choices:
- no ←
- yes

Run the equivalent of `zypper refresh` before the operation. Disabled in check mode.
aliases: refresh

## Notes

Note

- When used with a loop: each package will be processed individually, it is much more efficient to pass the list directly to the name option.

## Examples

    # Install "nmap"
    - zypper:
        name: nmap
        state: present

    # Install apache2 with recommended packages
    - zypper:
        name: apache2
        state: present
        disable_recommends: no

    # Apply a given patch
    - zypper:
        name: openSUSE-2016-128
        state: present
        type: patch

    # Remove the "nmap" package
    - zypper:
        name: nmap
        state: absent

    # Install the nginx rpm from a remote repo
    - zypper:
        name: 'http://nginx.org/packages/sles/12/x86_64/RPMS/nginx-1.8.0-1.sles12.ngx.x86_64.rpm'
        state: present

    # Install local rpm file
    - zypper:
        name: /tmp/fancy-software.rpm
        state: present

    # Update all packages
    - zypper:
        name: '*'
        state: latest

    # Apply all available patches
    - zypper:
        name: '*'
        state: latest
        type: patch

    # Perform a dist-upgrade with additional arguments
    - zypper:
        name: '*'
        state: dist-upgrade
        extra_args: '--no-allow-vendor-change --allow-arch-change'

    # Refresh repositories and update package "openssl"
    - zypper:
        name: openssl
        state: present
        update_cache: yes

    # Install specific version (possible comparisons: <, >, <=, >=, =)
    - zypper:
        name: 'docker>=1.10'
        state: present

    # Wait 20 seconds to acquire the lock before failing
    - zypper:
        name: mosh
        state: present
      environment:
        ZYPP_LOCK_TIMEOUT: 20

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]
- This module is maintained by the Ansible Community. [community]

### Authors

- Patrick Callahan (@dirtyharrycallahan)
- Alexander Gubin (@alxgu)
- Thomas O’Donnell (@andytom)
- Robin Roth (@robinro)
- Andrii Radyk (@AnderEnder)

Hint

If you notice any issues in this documentation, you can edit this document to improve it.