Ubuntu – Why don’t programs completely uninstall (remove all their files) when I remove them

software-uninstall

In Ubuntu, or any Linux, when I decide to remove a program and then later reinstall it, I notice that it didn't remove anything I previously made, thus making it a little pointless for me, as I like to freshly install stuff often. Whenever I decide to reinstall it it's just like it was before I removed the program. Why is this?

I'm used to uninstalling something similar to Windows or Android in that it completely removes everything and the only real way to recover that data would be to either save it somewhere, or if they give me an option to log in to recover it, is there a way to do that on Linux too?

Sometimes I remove it from the Ubuntu Software center and use sudo apt-get --purge remove [application].

I'm using Ubuntu 18.10, I have nothing to uninstall right now I'm just curious.

Best Answer

That's not quite true. No package operation should remove user data, ever, under any circumstances.

The reasoning for this is simple: The application doesn't own the data. You do.

Firstly, as an aside, other than the Ubuntu login screen, if an application asks you to log in, then your data is almost certainly not on your machine. The log in process is most likely related to an online authentication mechanism to provide access to your data stored somewhere else. Android and iOS have a (limited) ability to sync small amounts of user and configuration data for applications with "cloud" servers, but that doesn't necessarily disappear after uninstalling an application either.

All OSs (including Windows* and Android) are dependent on removal scripts. These presume that you want the software to go away but keep the configuration so that you can install it again later. The --purge option to apt merely removes configuration files.

If you're making modifications outside your own data (/home) then we assume you know what you're doing so your system continues to behave to your configuration. It's easy to rm -R the config files yourself, it's not so easy to get your specific customised version of things back the way you had set them up. So these scripts tend to err on the side of caution.

These scripts make various assumptions about what was installed and they are frequently written by humans who can make mistakes. Sometimes the software does something special, particularly when the software has dependencies.

We (Ubuntu developers) do do tests on test systems. We install the software into a clean installation of Ubuntu, and then we run apt remove and apt --purge remove and verify that the system returned to the expected (pre-installed) state.

If you do see a situation where a package is installed, no modifications are made to the config, and the package is then removed but files remain, then please file a bug against that package.

An alternative is to use snap, which houses the application entirely in its own environment.

*(in fact, this is one of the top ways Windows applications install malware, by "piggybacking" malware onto applications you choose to install, and then not removing them when you uninstall them.)

Related Question