What do you think? Discuss, post comments, or ask questions at the end of this article [More about me]

Skip to end of metadata
Go to start of metadata

You might need/want to install a package on your Arch based distro (e.g. Arch, Manjaro, ArcoLinux, etc..) with all its optional dependencies.  You could do this from your distro's (generally GUI based) package helper (like Manjaro's pamac-manager) but we're going to cover doing this from the command line using standard pacman (which your Arch based distro will have).

Guide

The approach we're using here uses two steps:

  1. install main package
  2. install optional dependencies as dependencies (–asdeps)

Install main package first

As mentioned, we need to install the main package first.  Let's use wine as an example (chose wine since it has quite a few optional dependencies).

Install the main wine package as per usual:

sudo pacman -S wine

Once you've installed this, let's move onto installing all optional dependencies.

Install all optional dependencies (as dependencies)

Now, let's install all optional dependencies.  We're going to use the pactree command which will list all dependencies (optional and otherwise) for the wine package that we just installed.  Execute the following from the command line:

sudo pacman -S --asdeps $(pactree -l wine)

As mentioned, the above will use pactree to list all dependencies (including optional dependencies) and feed these to pacman to install them.

It's important to note that we should use the --asdeps argument here to mark these packages's install reason as a "dependency" (otherwise, these packages will be marked as "explicitly" installed).  This means that if you uninstall the main package, these optional dependencies will be orphaned - which you can then safely uninstall with a single command (which you can run often to clean up any orphans):

sudo pacman -Rns $(pacman -Qtdq)

References

  1. https://wiki.archlinux.org/index.php/pacman
  2. https://wiki.archlinux.org/index.php/Pacman#Pactree
  3. https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#Removing_unused_packages_.28orphans.29