community.general.pacman module – Manage packages with pacman
Note
This module is part of the community.general collection (version 8.6.7).
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.
Aliases: packaging.os.pacman
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 will be processed individually, it is much more efficient to pass the list directly to thename
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.In the tests, while using
yay
as theexecutable
option, the module failed to install AUR packages with the error:error: target not found: <pkg>
.
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: |
|
Error output from pacman. Returned: success, when needed Sample: |
|
Output from pacman. Returned: success, when needed Sample: |