# pacman – Manage packages with pacman

- Synopsis

- Parameters

- Notes

- Examples

- Return Values

- Status

## Synopsis

- Manage packages with the pacman package manager, which is used by Arch Linux and its variants.

## Parameters

Parameter | Choices/Defaults | Comments
--- | --- | ---
extra_args - added in 2.8 | Default: null | Additional option to pass to pacman when enforcing `state`.

force
boolean

Choices:
- no ←
- yes

When removing package, force remove package, without any checks. Same as `extra_args="--nodeps --nodeps"`. When update_cache, force redownload repo databases. Same as `update_cache_extra_args="--refresh --refresh"`.

name - |  | Name or list of names of the package(s) or file(s) to install, upgrade, or remove. Can't be used in combination with `upgrade`. aliases: package, pkg

recurse
boolean

Choices:
- no ←
- yes

When removing a package, also remove its dependencies, provided that they are not required by other packages and were not explicitly installed by a user. This option is deprecated since 2.8 and will be removed in 2.10, use `extra_args=--recursive`.

state
-

Choices:
- absent
- latest
- present ←

Desired state of the package.

update_cache
boolean

Choices:
- no ←
- yes

Whether or not to refresh the master package lists.
This can be run as part of a package installation or as a separate step.
aliases: update-cache

update_cache_extra_args - added in 2.8 | Default: null | Additional option to pass to pacman when enforcing `update_cache`.

upgrade
boolean

Choices:
- no ←
- yes

Whether or not to upgrade the whole system. Can't be used in combination with `name`.

upgrade_extra_args - added in 2.8 | Default: null | Additional option to pass to pacman when enforcing `upgrade`.

## 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

    - name: Install package foo from repo
      pacman:
        name: foo
        state: present

    - name: Install package bar from file
      pacman:
        name: ~/bar-1.0-1-any.pkg.tar.xz
        state: present

    - name: Install package foo from repo and bar from file
      pacman:
        name:
          - foo
          - ~/bar-1.0-1-any.pkg.tar.xz
        state: present

    - name: Upgrade package foo
      pacman:
        name: foo
        state: latest
        update_cache: yes

    - name: Remove packages foo and bar
      pacman:
        name:
          - foo
          - bar
        state: absent

    - name: Recursively remove package baz
      pacman:
        name: baz
        state: absent
        extra_args: --recursive

    - name: Run the equivalent of "pacman -Sy" as a separate step
      pacman:
        update_cache: yes

    - name: Run the equivalent of "pacman -Su" as a separate step
      pacman:
        upgrade: yes

    - name: Run the equivalent of "pacman -Syu" as a separate step
      pacman:
        update_cache: yes
        upgrade: yes

    - name: Run the equivalent of "pacman -Rdd", force remove package baz
      pacman:
        name: baz
        state: absent
        force: yes

## Return Values

Common return values are documented here, the following are the fields unique to this module:

Key | Returned | Description
--- | --- | ---
packages list | when upgrade is set to yes | a list of packages that have been changed Sample: ['package', 'other-package']

## Status

- This module is not guaranteed to have a backwards compatible interface. [preview]

- This module is maintained by the Ansible Community. [community]

### Authors

- Indrajit Raychaudhuri (@indrajitr)

- Aaron Bull Schaefer (@elasticdog) <aaron@elasticdog.com>

- Maxime de Roucy (@tchernomax)

Hint

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