community.general.pacman module – Manage packages with pacman
Note
This module is part of the community.general collection (version 6.6.2).
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 extra_args=”–nodeps –nodeps”. When combined with update_cache, force a refresh of all package databases. Same as update_cache_extra_args=”–refresh –refresh”. Choices:
|
|
Name or list of names of the package(s) or file(s) to install, upgrade, or remove. Can’t be used in combination with |
|
The install reason to set for the packages. Choices:
|
|
Set the install reason for In case of state=latest already installed packages which will be updated to a newer version are not counted as 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. Can’t 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 will be processed individually, it is much more efficient to pass the list directly to the name option.To use an AUR helper (executable option), a few extra setup steps might be required beforehand. For example, a dedicated build user with permissions to install packages could be necessary.
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 name or upgrade=true are specified next to update_cache=true. Returned: success, when update_cache=true Sample: |
|
A list of packages that have been changed. Before community.general 4.5.0 this was only returned when upgrade=true. In community.general 4.5.0, it was sometimes omitted when the package list is empty, but since community.general 4.6.0 it is always returned when name is specified or upgrade=true. Returned: success and name is specified or upgrade=true Sample: |
|
Error output from pacman. Returned: success, when needed Sample: |
|
Output from pacman. Returned: success, when needed Sample: |
Collection links
Issue Tracker Repository (Sources) Submit a bug report Request a feature Communication