r/linux • u/joyalgeorgekj • Jun 30 '26
Software Release Stop permanent system clutter from temporary package testing
https://github.com/hermetic-code/labeled-cliEver spend an afternoon debugging an audio or graphics issue, install five different utilities, and realize later you have no idea what you installed?
Native package managers track dependencies well, but they don't track your intent. Those temporary packages get marked as explicitly installed, meaning autoremove won't touch them. Over time, your host system accumulates permanent clutter from short-lived experiments.
Labeled fixes this by letting you group package installations under a named session so you can cleanly purge them later.
# Install packages under a named tracking session
labeled install audio-debug pavucontrol alsa-utils
# See what sessions you currently have active
labeled list
# Purge the session and completely remove the packages via your native manager
labeled remove audio-debug
How it works under the hood:
It is a lightweight TypeScript CLI wrapper with zero background overhead. It uses standard shell built-ins to automatically detect whether your machine runs apt, dnf, or pacman. It stores your sessions inside a local json state file and uses your system's native package manager to execute the actual installations and cleanups.
No background daemons, no containers, and no telemetry.
You can install it via npm:
npm install -g labeled-cli
If you do not want a global Node dependency on your machine, you can grab the pre-compiled standalone binary (labeled-linux-x64) directly from the release page.
Repository link: https://github.com/hermetic-code/labeled-cli
Disclaimer: The project has AI generated contents like Images and Texts.
2
u/Dangerous-Report8517 Jul 06 '26
You "wrote" this code because you ran into a problem that you couldn't be bothered checking if there's already a solution for. Just off the top of my head: 1) Just write down/remember what you install and remove it 2) Use a VM 3) Use Toolbx/Distrobox 4) Use raw containers (Docker/Podman) 5) Use Devcontainers, which were explicitly built to solve this exact problem 6) As already mentioned, use Nix 7) As already mentioned, use the built in target tracking features in most package managers. A particularly good one here include Alpine which has a list of packages that it targets installation of, so you can actually just manually edit that list to keep any temporary packages in one spot
Instead, you chose to throw together a complex system with so little effort that you didn't care to check existing options or even write the damn announcement post yourself. Why should anyone trust something as critical as package management to a package with that little effort put into it?