13

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.

Zanna
  • 70,465
  • 1
    Use purge instead of remove. – Pilot6 Feb 21 '19 at 22:40
  • 1
    Android has the ability to sync data to a Google account. Is that what you mean by "log in to recover it"? I haven't seen that option on Windows (yet). – tudor -Reinstate Monica- Feb 22 '19 at 04:51
  • 9
    Do you really believe Windows removes everything. My experience is quite the contrary. And the mess left by uninstalled applications in the Windows Registry is just horrible. – Ister Feb 22 '19 at 10:14
  • 2
    Most (good) Windows applications offer you an option to delete your user date or keep it around, but quite a bunch of them won't touch your personal stuff. – T. Sar Feb 22 '19 at 11:15
  • @t-sar Can you cite an example of this? I've literally never seen a Windows application offer to destroy user data. – tudor -Reinstate Monica- Feb 22 '19 at 22:07
  • I've been at the developer end of installers/uninstallers for very large windows program suites, If the developers fail to tell the installer/uninstaller developer about what they have created in non-volatile storage, it will be left behind. Installers is a very tedious and boring job - hardly anyone wants to do it. Very slow turnaround. – cup Feb 23 '19 at 09:50

3 Answers3

29

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.)

  • 2
    I think the question asked is why an uninstall does not remove user data created by using the application (“didn't remove anything I previously made”), and this answer simply states it as an axiom in the first pair of sentences, instead of explaining or justifying it. – ShreevatsaR Feb 22 '19 at 03:23
  • @ShreevatsaR, I took the OP's statement "I like to freshly install stuff often" as the basis for the OP's intent. This would mean not just the user data and application, but also system config files and user config files as well. And the "similar to Windows and Android" shows a misunderstanding of how these OSs manage packages and data as well, including "Log in to recover it" (the user data). – tudor -Reinstate Monica- Feb 22 '19 at 04:46
  • 2
    "It's easy to rm -R the config files yourself" Is it? That assumes you know where they all are. Couldn't they be anywhere? I basically assume all install operations are permanent. I don't see the point of even providing a remove option for package managers. You always have to start from scratch if you want software gone. Am I too fatalist here? – Nacht Feb 22 '19 at 07:33
  • 1
    "Couldn't they be anywhere?" technically yes. In reality, probably 95% of the files will be in one of the few traditional locations. Very few applications will write files to completely illogical non-traditional locations. So, you usually just need to check few well known directories. Often you can also look up information about the software to know which directories have its files. You could even fire up a VM, install the software and see where it writes files, if you wish. All in all, you're making it sound like it's much harder to find what to delete than it is. – VLAZ Feb 22 '19 at 07:42
  • 2
    "Couldn't they be anywhere?" If you did not change anything in the config files they will be removed if you use --purge. If you did change something in them, you obviously know where they are. – technical_difficulty Feb 22 '19 at 09:05
  • 3
    “and only if they haven't been modified by the user” — are you sure? At least in Debian (and therefore, in all packages which Ubuntu pulls in without change), purging a package deletes all its (system-wide) configuration, whether or not the system administrator has modified it (see the policy section on configuration behaviour). This doesn’t override the rule that anything in /home is off-limits, so user-specific configuration is preserved. – Stephen Kitt Feb 22 '19 at 09:44
  • 1
    @technical_difficulty Not necessarily. Some programs can be configured through purpose-built GUIs or CLIs that don't say exactly which files they're modifying. – 8bittree Feb 22 '19 at 20:15
  • @StephenKitt, I think you're right. I think I was confusing it with the update process which checks that the config file hasn't been changed, and in some cases I've seen that implemented as update = remove + install so some packagers put change checks in the remove script(s). I've removed the statement. – tudor -Reinstate Monica- Feb 23 '19 at 01:19
14

sudo apt remove or uninstalling an application normally from the Software Center will just uninstall the regular package files and leave configuration behind, so that reinstalling the package later will usually pretty much restore your previous state of the application.

sudo apt purge or sudo apt remove --purge instead will uninstall a package and additionally remove residual system-wide configuration files afterwards. You can also use those to purge the residual configuration of a previously only removed package.

The package manager will never delete user data or user configuration files though, which is created during the run-time of the application. Those files are not tracked and the user is responsible themselves to clean them out of their home directory, if they don't want to keep them. (Theoretically a package could contain a post-remove script that checks common user data locations for files it might have created, but that should normally not be the case)

Byte Commander
  • 107,489
0

In Windows, you always have some trace of the invasive program in the registry that must be removed manually. Anything related to AV, populates the Win architecture heavily… Plus, Windows requires a third party app to fully remove a program. Ccleaner and Revo are among them.

In Ubuntu, apt purge removes almost everything, if not all. A manual search in Synaptic Package Manager shows the entire deletion process. It can be double checked by running apt purge or inversely, by searching it in Synaptic.

You must be prudent and precise using that app, it’s a hot place to be.

Mikemecanic
  • 141
  • 5
  • "In Windows, you always have some trace of the invasive program in the registry that must be removed manually." Well, not ALWAYS! But it is an issue. – Laurence Feb 23 '19 at 01:27