彻底删除应用程序的正确方法是什么?

彻底删除应用程序的正确方法是什么?

我在网上搜索了此类信息,发现了不同的命令行,例如这些:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

那么,正确的方法是什么?有必要使用那个“*”吗?

之后,我还发现了这些命令:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

答案1

  • apt-get remove packagename

    将会删除软件包的二进制文件,但不会删除其配置或数据文件packagename。它还会保留安装时安装的依赖项。

  • apt-get purge packagename或者apt-get remove --purge packagename

    将删除一切关于软件包packagename,但不涉及安装时随其一起安装的依赖项。这两个命令是等效的。

    当您因为弄乱了配置而想“重新开始”某个应用程序时,此功能特别有用。但是,它不会删除位于用户主目录中的配置或数据文件(通常位于隐藏文件夹中)。而且,也没有简单的方法可以删除这些文件。

  • apt-get autoremove

    删除孤立包,即以前作为依赖项安装但现在不再作为依赖项安装的已安装包。在删除安装了您不再感兴趣的依赖项的包后使用此功能。

  • aptitude remove packagenameaptitude purge packagename(同样)

    还将尝试删除 所需的其他软件包,packagename但其余软件包不需要这些软件包。请注意,aptitude仅记住已安装软件包的依赖关系信息。

还有更多。可以使用低级dpkg命令(高级),或使用 Muon、Synaptic、Software Center 等 GUI 工具。没有单一的“正确方法”来删除应用程序或执行与包管理交互的其他任务。

您找到的列表只是示例。在接受操作之前,请确保您理解含义并尝试它要做什么(您需要按下Y才能真正执行所建议的操作)。

问题中的星号版本是可能是错的;apt-get接受正则表达式而不是 glob 模式作为 shell。那么

sudo apt-get remove application*

如下:

  1. shell 尝试扩展application*当前目录中的文件。如果(通常情况下)它什么也没找到,它会原封不动地返回 glob 模式(假设bash此处采用默认行为 ---zsh将会出错)。

  2. apt-get将删除名称为包含一个字符串满足正则表达式的,application*applicatio后面跟着任意数量的napplicatio,,,,,等等。applicationapplicationnlibapplicatio

  3. 要了解这有多危险,请尝试(无需 root 权限,以确保双重安全)apt-get -s remove "wine*"-s将模拟该操作而不是执行该操作)---它会说要删除所有名称中带有“win”的软件包及其依赖项,几乎整个系统......

可能,这个命令实际上是

 sudo apt-get remove "^application.*"

(注意引号和点)这将删除所有名称以 开头的包application

这些命令,

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

完全超出了包管理的范围。不要在不使用包管理器的情况下删除属于包的文件!否则会造成混淆,并且错误的做事的方式。

如果您不知道文件属于哪个包,请尝试以下操作:

dpkg -S /path/to/file

答案2

对于 Ubuntu 12.04 及更高版本,正确的方法是:

sudo apt-get --purge autoremove packagename

详细这里

不要使用packagename*,因为这可能会删除不需要的包,导致的问题比解决的问题还多。或者,如果必须使用,至少先使用-s, --simulate,--dry-run标志运行它,以确切了解如果不执行此操作会有什么效果。

答案3

您可以使用此命令:

sudo apt-get purge --auto-remove packagename

它将清除所需的软件包以及与这些软件包一起安装的依赖项。--auto-remove选项(的别名autoremove)的工作方式类似于sudo apt-get autoremove。通过使用此命令,我们可以运行单个命令:

sudo apt-get purge --auto-remove packagename

代替:

sudo apt-get purge packagename
sudo apt-get autoremove

答案4

我在网上找到了这个命令。

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems

相关内容