I noticed while updating my system just how many packages I have installed that I don’t recognize.
I tend to think that minimalism is better for security, so I’d like to remove any packages that I’m not using, but this is a bit of a scary task.
Does anybody have a safe method for reviewing and purging unused or bloat packages while obviously making sure not to accidentally remove important dependencies?
I’m on arch btw.
For anyone reading this on a Debian-based system, you can get a good start without risking removing anything important like this:
- Run
apt-mark showmanual
, and copy any package names you don’t think you need into a list. - Run
apt-mark auto <pkg1> <pkg2> ...
- Run
apt autoremove
- Run
Assuming you are using something Debian based, you can use:
apt purge (package name)
Followed by:
apt autoremove
These are just dependencies for your packages. However, Arch doesn’t automatically clean the downloaded files after installation so that ends up taking space. On my Dell laptop that has only a 64 GB eMMC, the installation package files took and whopping 5 GB of space, sitting there doing nothing. I nuked them (it didn’t remove the installed apps and libs, only the already used package files). Run:
sudo pacman -Scc
That’s because a lot of them are dependencies for the packages you actually want to use, and those needed for the system to work as designed.
EDIT: More information provided. I disagree with the upvoted comment implying you should leave your system alone because you might break something. You’re using Arch, and part of the reason to use Arch is understanding how you built and maintain your system. Understanding how to inspect your system and perform proper maintenance is a crucial part of that. Read and think carefully before taking any actions and make sure any important information is backed up before taking major actions. Without throwing too much further shade, I find it disappointing so many in the community would take that stance and discourage you from pursuing this further.
When I switched to Arch, I started a notebook in Obsidian with a bunch of different information in it, I have a section devoted to Maintenance. Here are a few things I’ve put in there:
Clean package cache with paccache: https://ostechnix.com/recommended-way-clean-package-cache-arch-linux/
Clean orphaned dependencies:
sudo pacman -Rs $(pacman -Qtdq)
- https://man.archlinux.org/man/pacman.8.en
- Qtdg, Q (Query) t (unrequired) d (dependencies) g (groups)
- Rs, R (Remove) s (recursive)
Additionally, you can run
pacman -Qe
to list the packages you yourself have explicitly installed with pacman, orpacman -Qdt
to list the packages that are dependencies of other packages. Usepacman -Qm
to list packages not found in the official repositories (i.e., things installed through yay). This will allow you to review packages you may have explicitly installed in the past for some reason, but now find you no longer need.For yay, I’m unsure if I should be using
-Yc
,-Sc
, or-Scc
. If anyone has more info with that, I’d appreciate it.For flatpak:
flatpak uninstall --unused
And for journals:
journalctl --vacuum-time 7days
That’s most of the “automatic” stuff, cruft that can be cleaned out with little to no consequence. Other than that, you’ll just have to manually review what you have on your system.
If anyone has other commands or comments on the ones I provided, I’d be happy to accept further advice here as well 😃
Clean orphaned dependencies:
sudo pacman -Rs $(pacman -Qtdq)
In addition to this, or rather before, you can run
pacman -D --asdeps package_name
to mark a package as a dep. If it is no longer required by something else it will be removed with the above. This can be useful for things that are deps that you installed manually at some point for some reason.And remember that you can recover from anything, even removing base packages or bootloader ones with a live cd and chroot or using pacman with a different root with the
--root /mnt
flag to pacman.Otherwise if your system still boots it is just a matter of following the install instructions for whatever is not working like you did the first time.
In addition to this, or rather before, you can run pacman -D --asdeps package_name to mark a package as a dep. If it is no longer required by something else it will be removed with the above. This can be useful for things that are deps that you installed manually at some point for some reason.
Oh, that’s some amazing info, thanks!
I had noticed this might be a problem when I was setting something up and tried to install a dependency that was already on the system. It informed me it was being set to explicit and I wondered if it might lead to a situation like that.
You can run
pacman -Qe
to list explicitly installed packages, beware of packages you may have installed manually as optional dependencies of other packages.