3.6 KiB
Command line: pacman
The built-in package manager of Arch Linux (among others).
This note is based from pacman v6
and above.
Subcommands
Interestingly, pacman does not have subcommands with specific options. Instead, they go with specific flags denoting a subcommand. Practically, they're just subcommands except appearing as options.
# Rather than 'pacman install podman' or something similar.
pacman -S podman
Here's what you can do with the package manager:
-
-S
are concerned with syncing the local database to the remote databases.-y, --refresh
syncs the local database to the remote database; running with this flag alone is not recommended as the package manager will have problems.-u, --sysupgrade
upgrades the local database; this should be used with-y
if you intend it for a proper operating system upgrade.-g, --groups [GROUP]
prints what packages belong to the given group
-
-Q
is primarily from querying information from your installed packages ranging from listing installed packages to listing all of the files owned by a certain package.-l, --list [PACKAGES...]
lists the files associated with the package.-i, --info [PACKAGES...]
prints information about the package.
-
-F [FILENAME]
are mostly query-related operations with the database. It also prints which package owns the given file.-y, --refresh
refreshes the database.
-
-R
removes installed packages.-n, --nosave
removes the configuration files associated with the package; this doesn't remove files from the home directory, though.-s, --recursive
will recursively removes dependencies that are not used anywhere else.
You can see more of them in the "Operations" section of the manual page (i.e., pacman.1
).
Examples
Welp, this is what you came for so let's go ahead.
Quickstart
It's a package manager so it's supposed to do basic package manager stuff. All of the shown commands are in longform with the shortform just commented for practical purposes.
# Search for a pacakge
# pacman -Ss podman
pacman --sync --search podman
# Install a package
# pacman -S podman
pacman --sync podman
# Uninstall a package
# pacman -Rns podman
pacman --remove --no-save --recursive podman
# Upgrade the system
# pacman -Syu
pacman --sync --refresh --upgrade
Package search selection
With everybody's favorite fuzzy finder, fzf.
pacman --sync --quiet --search pkg | fzf --prompt "Package to install > " | xargs doas pacman --sync
You can also create a search selection with all of the packages with the following one-liner.
pacman -S --list --quiet \
| fzf --multi --prompt "Install package(s) > " \
| xargs doas pacman -S --noconfirm
Package removal selection
Another interactive script with fzf.
pacman -Q --native --quiet | fzf --multi --prompt "Remove installed package(s) > " | xargs doas pacman -Rns --noconfirm
Related notes
- pacman does not have a way to query packages that are not installed;
for example, you cannot know what files are owned by the package unless it is installed (also you have
pkgfile
for that) - pacman also cannot view the PKGBUILD of packages that are not installed;
you can use the
asp
tool for that (i.e.,asp show ${PACKAGE}
)