Managing Orphan Packages

Orphan packages are those marked as Installed as a dependency for another package, but which are missing the parent package that depended on them. This can occur when a package with many dependencies is installed and then later removed via a single -R (without -su). Or when a package is upgraded, and the new version no longer requires a certain dependency.

In these cases, the dependencies are left behind and becomes orphans, chewing up disk space.

The -O command can help deal with these.

What packages have become orphans?

> aura -O python-docopt python-flask python-path-and-address

Weird! Are they really not needed?

> aura -Qi python-docopt Name : python-docopt Version : 0.6.2-7 Description : Pythonic argument parser, that will make you smile Architecture : any URL : https://github.com/docopt/docopt Licenses : MIT Groups : None Provides : None Depends On : python Optional Deps : None Required By : None Optional For : None Conflicts With : None Replaces : None Installed Size : 83.17 KiB Packager : Evangelos Foutras <evangelos@foutrelis.com> Build Date : Thu Oct 31 09:48:34 2019 Install Date : Fri Jun 12 09:43:12 2020 Install Reason : Installed as a dependency for another package Install Script : No Validated By : Signature

Sure enough, Required By: None.

Uninstalling Orphans

Clearing orphans doesn't just save us space now - it saves the space of all future upgrades we won't have to download anymore.

-Oj will uninstall all such packages. Under the hood, it passes -Rsu to pacman, hence there are more packages to uninstall than first appeared in the -O list above.

> aura -Oj checking dependencies... Package (5) Old Version Net Change python-itsdangerous 1.1.0-4 -0.11 MiB python-werkzeug 1.0.1-2 -2.13 MiB python-docopt 0.6.2-7 -0.08 MiB python-flask 1.1.2-2 -0.80 MiB python-path-and-address 2.0.1-1 -0.01 MiB Total Removed Size: 3.12 MiB :: Do you want to remove these packages? [Y/n]

Adopting an Orphan

Changing a package's install reason from "dependency" to "explicitly installed" is possible via pacman alone, but Aura offers a shorthand:

> aura -Oa python-path-and-address python-path-and-address: install reason has been set to 'explicitly installed'

Forgotten Top-level Packages

The dual concept of the "orphan" would be the "elderly"; in this case, top-level packages which aren't depended on by anything else.

> aura -Oe abcl 1.9.2-1 alsa-utils 1.2.12-1 anki 2.1.66-1 aspell-en 2020.12.07-1 babashka-bin 1.3.191-1 base 3-2 base-devel 1-1 ... etc ...

If you notice anything here that you don't remember installing or that you don't need anymore, you can remove it. Consider also aura check for a list of such top-level packages that haven't been updated in the past year.