
I recently got tired of using shared hosting, where limitations like restricted shell access and incompatible system configurations made running certain web frameworks (i.e. Flask) a headache. After a few disappointing interactions with customer support—who seemed to know little about managing their own servers—I decided to move Grouching Tiger to a Virtual Private Server (VPS). A VPS would give me full control and let me have some fun playing system administrator. After some research, I just went with the cheapest one I could find ($2/month) and so far, it’s actually been pretty good (and yes, I think I get paid a commission if you sign up).
I used to run Puppy Linux as my primary OS in middle school and high school, so I figured, “Why not rekindle that love for nix-based systems?” After a couple of days putzing around and getting everything set up, I remembered one of my biggest pet peeves with Linux: dependencies. Installing one program feels like inviting ten other libraries and utilities to crash on your couch.
Why Does Installing Anything Require So Many Dependencies?
Linux software is modular, so instead of every program bringing its own copy of common functions, they borrow existing libraries. In theory, this is great. No need to reinvent the wheel! But in practice, a simple install command like:
sudo apt install my-app
… leads to something like this:
The following additional packages will be installed:
librandomthing1 libuseless2 libneverheardof3
Suggested packages:
package-you-don’t-want
Why does my note-taking app need three GUI toolkits, a spell checker in Russian, and an AI library? But you really need the app, so I guess we’re pressing “Y.”
Uninstalling: Are You Really Clean?
Now that you’ve installed the app, you realize it’s not as polished as you’d hoped and actually kind of sucks. Time to remove it:
sudo apt remove crappy-app
Sounds easy enough, right? Except, what about all those extra libraries that got pulled in? Are they still there? Do you need them for something else? Will deleting them break your system? I guess we could try:
sudo apt autoremove
But running this always feels like playing Russian roulette with your OS. One minute you’re clearing out junk, the next minute your Wi-Fi stops working because some “unnecessary” network library got sent to the shadow realm.
Eventually, if you don’t obsessively clean up, your Linux install becomes a junkyard of forgotten dependencies. Over time, you accumulate old libraries, redundant Python versions, random GTK themes, etc. Your once-lightweight Linux distro now feels like Windows ME after a decade of sketchy driver installs.
Why Windows (Kinda) Does This Better
As much as we like to rag on Windows (well, not me… at least not until Windows 11 happened), it actually handles this part better. Windows apps usually package everything together in a single installer, so when you uninstall something, it usually takes all its junk with it. Of course, there’s some registry clutter and leftover files, but at least Windows doesn’t make you guess which dependencies are safe to delete without breaking your system.
Conclusion
At the end of the day, the massive number of dependencies is a necessary evil of Linux. It keeps things modular and efficient… but it drives Type A personalities like mine crazy knowing that I’m adding random libraries and junking up my system with every install. I guess this is one of the main reasons I stopped using Linux, aside from the fact that Microsoft basically has a monopoly on Office products. And don’t tell me OpenOffice or LibreOffice are acceptable substitutes.