:PROPERTIES: :ID: 77f3ec38-9885-4f2b-8019-9042f0c6e4cb :END: #+title: Command line: pacman #+date: "2021-06-08 15:00:04 +08:00" #+date_modified: "2021-07-19 23:49:40 +08:00" #+language: en #+property: header_args :eval no 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. #+begin_src shell # Rather than 'pacman install podman' or something similar. pacman -S podman #+end_src Here's what you can do with the package manager: - =-S= are concerned with syncing the local database to the remote databases. - =-F= are mostly query-related operations with the database. - =-R= removes installed packages. 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. #+begin_src shell # 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 #+end_src ** Package search selection With everybody's favorite fuzzy finder, [[id:4eb1f8b1-bc12-4a6c-8fa4-20e4c3542cf2][fzf]]. #+begin_src bash pacman --sync --quiet --search pkg | fzf --prompt "Package to install > " | xargs doas pacman --sync #+end_src You can also create a search selection with all of the packages with the following one-liner. #+begin_src bash pacman -S --list --quiet \ | fzf --multi --prompt "Install package(s) > " \ | xargs doas pacman -S --noconfirm #+end_src