community.general.pacman module – Manage packages with pacman
Note
This module is part of the community.general collection (version 10.7.5).
You might already have this collection installed if you are using the ansible package.
It is not included in ansible-core.
To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install community.general.
To use it in a playbook, specify: community.general.pacman.
Synopsis
- Manage packages with the pacman package manager, which is used by Arch Linux and its variants. 
Parameters
| Parameter | Comments | 
|---|---|
| Path of the binary to use. This can either be  Pacman compatibility is unfortunately ill defined, in particular, this modules makes extensive use of the  Beware that AUR helpers might behave unexpectedly and are therefore not recommended. Default:  | |
| Additional option to pass to pacman when enforcing  Default:  | |
| When removing packages, forcefully remove them, without any checks. Same as  When combined with  Choices: 
 | |
| Name or list of names of the package(s) or file(s) to install, upgrade, or remove. Cannot be used in combination with  | |
| The install reason to set for the packages. Choices: 
 | |
| Set the install reason for  In case of  Choices: 
 | |
| When removing packages, do not save modified configuration files as  Choices: 
 | |
| Whether to install ( 
 
 
 Choices: 
 | |
| Whether or not to refresh the master package lists. This can be run as part of a package installation or as a separate step. If not specified, it defaults to  Please note that this option only had an influence on the module’s  Choices: 
 | |
| Additional option to pass to pacman when enforcing  Default:  | |
| Whether or not to upgrade the whole system. Cannot be used in combination with  If not specified, it defaults to  Choices: 
 | |
| Additional option to pass to pacman when enforcing  Default:  | 
Attributes
| Attribute | Support | Description | 
|---|---|---|
| Support: full | Can run in  | |
| Support: full | Will return details on what has changed (or possibly needs changing in  | 
Notes
Note
- When used with a - loop:each package is processed individually, it is much more efficient to pass the list directly to the- nameoption.
- To use an AUR helper ( - executableoption), a few extra setup steps might be required beforehand. For example, a dedicated build user with permissions to install packages could be necessary.
- In the tests, while using - yayas the- executableoption, the module failed to install AUR packages with the error:- error: target not found: <pkg>.
- The common return values `stdout` and `stderr` are returned upon success, when needed, since community.general 4.1.0. 
Examples
- name: Install package foo from repo
  community.general.pacman:
    name: foo
    state: present
- name: Install package bar from file
  community.general.pacman:
    name: ~/bar-1.0-1-any.pkg.tar.xz
    state: present
- name: Install package foo from repo and bar from file
  community.general.pacman:
    name:
      - foo
      - ~/bar-1.0-1-any.pkg.tar.xz
    state: present
- name: Install package from AUR using a Pacman compatible AUR helper
  community.general.pacman:
    name: foo
    state: present
    executable: yay
    extra_args: --builddir /var/cache/yay
- name: Upgrade package foo
  # The 'changed' state of this call will indicate whether the cache was
  # updated *or* whether foo was installed/upgraded.
  community.general.pacman:
    name: foo
    state: latest
    update_cache: true
- name: Remove packages foo and bar
  community.general.pacman:
    name:
      - foo
      - bar
    state: absent
- name: Recursively remove package baz
  community.general.pacman:
    name: baz
    state: absent
    extra_args: --recursive
- name: Run the equivalent of "pacman -Sy" as a separate step
  community.general.pacman:
    update_cache: true
- name: Run the equivalent of "pacman -Su" as a separate step
  community.general.pacman:
    upgrade: true
- name: Run the equivalent of "pacman -Syu" as a separate step
  # Since community.general 5.0.0 the 'changed' state of this call
  # will be 'true' in case the cache was updated, or when a package
  # was updated.
  #
  # The previous behavior was to only indicate whether something was
  # upgraded. To keep the old behavior, add the following to the task:
  #
  #   register: result
  #   changed_when: result.packages | length > 0
  community.general.pacman:
    update_cache: true
    upgrade: true
- name: Run the equivalent of "pacman -Rdd", force remove package baz
  community.general.pacman:
    name: baz
    state: absent
    force: true
- name: Install foo as dependency and leave reason untouched if already installed
  community.general.pacman:
    name: foo
    state: present
    reason: dependency
    reason_for: new
- name: Run the equivalent of "pacman -S --asexplicit", mark foo as explicit and install it if not present
  community.general.pacman:
    name: foo
    state: present
    reason: explicit
    reason_for: all
Return Values
Common return values are documented here, the following are the fields unique to this module:
| Key | Description | 
|---|---|
| The changed status of  Useful when  Returned: success, when  Sample:  | |
| A list of packages that have been changed. Before community.general 4.5.0 this was only returned when  Returned: success and  Sample:  | 
