我在网上搜索了此类信息,并找到了不同的命令行,例如:

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)


评论

这篇文章可能会回答您的一些问题:askubuntu.com/questions/1143/how-can-i-uninstall-software

application *有时会产生意想不到的结果-例如,如果当前目录中有一个名为application_information的文件,则在将其传递给apt-get之前,shell会对其进行扩展。如果发生这种情况,并且您确实想要文字星号,则可以使用application \ *或'application *'

如果当前目录中没有文件,那么application *甚至会更加危险:apt-get使用正则表达式,没有glob模式。人们几乎抹去了整个系统以去除酒*。

你可以接受答案吗?要感谢回答您的人。

应用程序*和应用程序\ *都不安全!用\或''引号*只会增加风险,确保将*原样传递给apt-get(尽管通常还是这样!),使apt-get将参数解释为正则表达式。在正则表达式中,*表示“零个或多个前面的字符”。错误的常见形式是卸载wine *,删除名称中任何位置带有win的所有软件包(而不是wine,win),并删除所有依赖于它们的软件包。请参阅此说明和可能的修复程序。 @Izkata

#1 楼



apt-get remove packagename

将删除二进制文件,但不会删除软件包packagename的配置或数据文件。在安装时,它也将使安装的依赖项保持不变。与它安装。这两个命令是等效的。

当您想从一个应用程序“重新开始”时特别有用,因为您弄乱了配置。但是,它不会删除驻留在用户主目录中的配置或数据文件,这些文件通常位于该目录的隐藏文件夹中。也没有简单的方法来删除这些软件包。

apt-get purge packagename

删除孤立的软件包,即曾经作为依赖安装的已安装软件包,但是不再。在删除已不再安装依赖项的软件包后,请使用此方法。


apt-get remove --purge packagenamepackagename(同样)

还将尝试删除其他apt-get autoremove需要的软件包,而其余任何软件包都不需要。请注意,aptitude remove packagename仅记住已安装软件包的依赖项信息。


还有更多存在。可以使用(高级)较低级的aptitude purge packagename命令,或者使用诸如Muon,Synaptic,软件中心等GUI工具。
您找到的列表仅是示例。在接受操作之前,请确保您理解其含义并尝试执行操作(在实际执行建议的操作之前,请先按packagename)。

问题中的星号版本可能是错误; aptitude接受一个正则表达式而不是glob模式作为外壳。那么

sudo apt-get remove application*


会发生什么如下:


Shell尝试通过查看当前目录中的文件来扩展dpkg。如果(通常情况下)什么也没找到,它将返回不变的glob模式(假设Y具有默认行为,在这里--- apt-get将出错)。
application*将删除名称中包含满足条件的字符串的软件包正则表达式bash,即zsh后跟任意数量的apt-getapplication*applicationapplicatio等会模拟它,而不是模拟它。)---它会说要删除所有名称中带有“ 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


评论


当尝试完全删除所有剩余的依赖项(包括其配置文件)时,--purge选项也很方便:apt-get-autoremove --purge还必须注意,主目录中的配置文件不受--purge选项的影响。这些您将必须手动删除。

–谷氨酸
2012年9月14日下午22:16

这里有一个错误:apt-get接受RE,而不是glob;因此apt-get remove pack *会删除所有以pac开头,后跟零个或多个k ...的软件包,这通常是意外的。我编辑了分析器。另请参阅askubuntu.com/questions/210976/…

–罗马诺
2014年10月9日,11:12

我认为这个答案不再准确。 apt remove -s texlive *或它的apt-get对应的返回行(例如Note),为glob'texlive *'选择'texlive-font-utils'(暗示它们确实接受glob),然后是通常的Package'texlive -common'未安装,因此未删除,最后是Remv行,例如Remv texlive-font-utils [2015.20160320-1] [...]。

–乔纳森·Y。
17年6月12日15:34

@乔纳森您还将选择未安装的软件包。无论如何,能否请您提出一个新问题,并详细说明您的问题所在。我很乐意看看:)

– Gertvdijk
17年6月13日在20:56

我不是在问一个新问题。我指的是可能的更改,因为做出此答案会使某些细节不正确。明智地讲,似乎apt-get remove packa *确实确实采用了glob packa *而不是将其视为正则表达式:它匹配package但不匹配pack。

–乔纳森·Y。
17年6月13日在21:18

#2 楼

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

sudo apt-get --purge autoremove packagename


如此处详细说明。打包并导致更多的问题无法解决。或者,如果必须这样做,请至少首先使用packagename*-s--simulate标志运行它,以准确了解不执行此操作将执行的操作。

评论


这是正确的答案,简洁明了:

–安瓦尔
16年8月23日在17:53

#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


评论


尽管您是正确的,但是也可以使用sudo apt-get --purge autoremove软件包名称。同样的1条命令

–安瓦尔
16年8月23日在18:03

完整命令也可以写为apt-get autoremove --purge而不是apt-get purge --auto-remove吗?

–追随
16年11月7日在18:41

#4 楼

您可以99%的时间安全地使用sudo apt-get remove --purge applicationsudo apt-get remove applications。当您使用purge标志时,它也会简单地删除所有配置文件。您可能想要或不想要哪个,取决于您是否要重新安装所述应用程序。 application*将匹配以application开头的所有应用程序,通常是要删除的主应用程序的插件,附加功能等。即

sudo apt-get remove gedit*


将删除geditgedit-pluginsgedit-common。通常不需要这样做,因为大多数插件/关联程序都依赖于主应用程序,并且在卸载主应用程序时会自动删除(或标记为删除)。

您的最后一条命令只是从已知具有麻烦的卸载程序的应用程序中删除残留的内容,而只是删除该应用程序的所有残余内容。

#5 楼

我收到一些删除软件包的错误消息,发现起作用的唯一方法是:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package


我发现尽管只使用了

dpkg --remove --force-remove-reinstreq package


不会删除软件包,它向我显示了要移动的文件的正确路径:

mv /var/lib/dpkg/info/package.* /tmp/


用您的应用程序名称替换软件包。在Ubuntu中使用sudo,在Debian中成为root。

#6 楼

我在Internet上找到了此命令。

dpkg --purge --force-depends application


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

#7 楼

我只是想澄清一件事,似乎在这里引起混乱。
dpkg实用程序不了解或跟踪彼此之间的软件包依赖关系,这是开发apt的主要原因。您可以在此页面的8.6节中阅读有关此内容的信息。Debian GNU / Linux FAQ-Debian软件包管理工具


使用apt:如果我想清除软件包A,并且它有一个依赖性
称为程序包B,而程序包B没有其他依赖性程序包,那么将清除程序包A和B。如果程序包B DID具有其他从属程序包,则仅将程序包A清除。
使用dpkg:什么依赖性?您只是告诉我清除该死的包裹,所以我做到了!您的计划不当不会构成我的紧急情况。

话虽如此,这里有两种单线可用于每种吹扫方法:

dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --dry-run --purge

apt-get autoremove -y; apt-get --dry-run purge -y $(dpkg --list |grep '^rc' |awk '{print }')


删除--dry-run以执行实际的清除操作,而不是报告将采取的措施。

#8 楼

这取决于您要删除的应用程序。在发出yes命令之前,请务必确保检查其依赖性。当您通过命令行删除某些内容时,有时会显示一些不再需要的库。这些可以通过apt-get autoremove删除。

请注意,通过使用诸如sudo apt-get remove --purge applicationname之类的命令可能会删除其他应用程序所需的某些依赖项,因此可能会破坏系统。

如果您想以更安全的方式进行操作,则始终可以仅使用软件中心或apt-get remove applicationname对其进行删除。如果不再需要依赖项,请稍后发布apt-get autoremove。

评论


我认为整个Debian软件包系统是专门为在没有其他依赖该软件包的软件包而删除的情况下设计的。可能会(有帮助)询问您是否也要删除所有从属软件包,这是您应该实际阅读要删除的软件包列表的地方,这就是您想说的。

– Xen2050
2015年2月25日在11:07

#9 楼

要删除与软件包软件包名称有关的所有信息,例如数据和配置,而不是与安装时一起安装的依赖项,请使用:
apt-get remove --purge packagename