为什么在删除程序时不能完全卸载(删除所有文件)?


12

在Ubuntu或任何Linux中,当我决定删除一个程序然后再重新安装它时,我注意到它没有删除我以前制作的任何东西,因此对我来说毫无意义,因为我喜欢经常重新安装东西。每当我决定重新安装它时,就像删除该程序之前一样。为什么是这样?

我习惯于卸载类似于Windows或Android的东西,因为它会完全删除所有内容,而恢复该数据的唯一真正方法是将其保存在某个地方,或者如果他们给我提供了登录选项以进行恢复,则是有没有办法在Linux上做到这一点?

有时我从Ubuntu软件中心删除它并使用sudo apt-get --purge remove [application]

我正在使用Ubuntu 18.10,我现在没有什么可卸载的,只是很好奇。


1
使用purge代替remove
飞行员

1
Android可以将数据同步到Google帐户。这是“登录以恢复它”的意思吗?我还没有在Windows上看到该选项。
tu-Restate Monica-dor duh,

9
您是否真的相信Windows会删除所有内容。我的经验恰恰相反。Windows注册表中已卸载的应用程序所留下的混乱情况实在是太可怕了。
伊斯特

2
大多数(优质)Windows应用程序都为您提供了删除用户日期或保留用户日期的选项,但是其中很多不会影响您的个人资料。
T. Sar,

@ t-sar您能举个例子吗?我从没看过Windows应用程序提供过销毁用户数据的功能。
tu-Restate Monica-dor duh,

Answers:


26

那不是真的。 在任何情况下,任何打包操作都不应删除用户数据。

原因很简单:应用程序不拥有数据。 你做。

首先,除了Ubuntu登录屏幕外,如果某个应用程序要求您登录,那么几乎可以肯定您的数据不在您的计算机上。登录过程很可能与在线身份验证机制有关,以提供对存储在其他位置的数据的访问。Android和iOS具有(有限的)功能来与“云”服务器同步应用程序的少量用户和配置数据,但是在卸载应用程序后也不一定消失。

所有操作系统(包括Windows *和Android)都依赖于删除脚本。这些假定您希望软件消失,但保留配置,以便稍后可以再次安装。仅删除配置文件--purge选项。 apt

如果您要在自己的数据(/ home)之外进行修改,那么我们假设您知道自己在做什么,因此系统将继续按照您的配置运行。这很容易rm -R在配置文件自己,这不是那么容易得到你的具体定制的东西版本支持你已经建立起来的方式。 因此,这些脚本倾向于谨慎行事。

这些脚本对安装的内容进行了各种假设,并且经常由可能出错的人编写。有时,软件会做一些特别的事情,特别是当软件具有依赖项时

我们(Ubuntu的开发)做测试系统的测试。我们将软件安装到一个干净的Ubuntu安装的,然后我们运行apt removeapt --purge remove并验证系统恢复的预期(预装)状态。

如果你看到在安装包的情况下,任何修改到配置提出,然后将包被删除,但文件仍保留,然后提交针对这个软件包的错误。

一种替代方法是使用snap,它将应用程序完全放在自己的环境中。

*(实际上,这是Windows应用程序安装恶意软件的主要方式之一,方法是将恶意软件“ pi带”到您选择安装的应用程序上,然后在卸载它们时删除它们。)


2
我认为提出的问题是,为什么卸载操作不会删除使用该应用程序创建的用户数据(“未删除我之前所做的任何事情”),并且此答案只是在第一对句子中将其声明为公理,而不是解释或证明它。
ShreevatsaR

2
“您自己rm -R配置文件很容易”是吗?假设您知道它们的全部位置。他们可以在任何地方吗?我基本上假设所有安装操作都是永久的。我什至看不到为软件包管理器提供删除选项的意义。如果要使软件消失,则始终必须从头开始。我在这里也宿命吗?
Nacht-恢复莫妮卡

1
他们不能在任何地方吗? ”从技术上讲,是的。实际上,大概95%的文件将位于少数几个传统位置之一。很少有应用程序会将文件写入完全不合逻辑的非传统位置。因此,您通常只需要检查几个众所周知的目录。通常,您还可以查找有关该软件的信息,以了解哪些目录具有其文件。如果愿意,您甚至可以启动VM,安装软件并查看其写入文件的位置。总而言之,您正在听起来好像很难找到要删除的内容。
VLAZ

2
“他们不能在任何地方吗?” 如果您未更改配置文件中的任何内容,则使用时它们将被删除--purge。如果您确实更改了其中的某些内容,那么您显然会知道它们的位置。
技术

3
“并且只有在用户未修改它们的情况下 ” –您确定吗?至少在Debian中(因此,在Ubuntu无需更改就插入的所有软件包中),清除软件包会删除其所有(系统范围内的)配置,无论系统管理员是否对其进行了修改(请参阅配置行为的策略部分)。 。这不会覆盖所有内容都禁止进入的规则/home,因此会保留用户特定的配置。
史蒂芬·基特

13

sudo apt remove 或从软件中心正常卸载应用程序,只会卸载常规的软件包文件并保留配置,因此以后重新安装软件包通常可以使您恢复以前的应用程序状态。

sudo apt purge否则,sudo apt remove --purge将卸载软件包并随后删除剩余的系统范围内的配置文件。您也可以使用它们清除以前仅删除的软件包的残留配置。

程序包管理器将永远不会删除在应用程序运行时创建的用户数据或用户配置文件。这些文件不会被跟踪,如果用户不想保留这些文件,则用户有责任自行将其从主目录中清除。(理论上,程序包可以包含删除后脚本,该脚本检查公共用户数据位置中可能已创建的文件,但通常情况并非如此)


5
一个软件包的删除脚本会从用户的目录中删除甚至检查用户的目录,这是恶意软件,不应被任何可观的发行版存储库接受。
R .. GitHub STOP HELPING ICE

0

在Windows中,您总是在注册表中有一些入侵程序的痕迹,必须手动将其删除。任何与AV相关的东西都会大量填充Win架构。此外,Windows需要第三方应用程序才能完全删除程序。Ccleaner和Revo就在其中。

在Ubuntu中,apt purge清除几乎所有内容,即使不是全部。在Synaptic软件包管理器中的手动搜索显示了整个删除过程。可以通过运行apt purge来进行双重检查,或者通过在Synaptic中进行搜索来进行反向检查。

使用该应用程序时,您必须谨慎且精确,这是一个热门的地方。


“在Windows中,您总是在注册表中有一些入侵程序的痕迹,必须手动将其删除。” 好吧,并非总是如此!但这是一个问题。
劳伦斯·佩恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.