如何完全删除包裹?


188

我正在尝试对该octave3.2软件包进行全新安装。

为此,我将其删除,然后尝试重新安装。

重新安装后,发生了错误。这可能是软件包中的错误,但我想确保已删除所有内容,以便可以进行全新安装。

这样做是否足够?

sudo apt-get --purge remove octave3.2

可以一个人重新安装该软件包并注意该软件包或依赖项列表吗?
user309924 2014年

建议参观 此地点
Pandya 2014年

Answers:


185

这是关于清除程序包影响的非常普遍的答案。对于特定于您情况的建议,您必须编辑问题以包括其他信息,尤其是要获取的错误消息的完整而准确的文本。

使用或删除软件包将删除它们及其所有全局(即系统范围)配置文件。这就是人们谈论完全删除软件包时的意思。sudo apt purge ...sudo apt --purge remove ...

但这并不意味着您的系统与安装软件包之前的系统相同。尤其是:

  • 当您安装要删除的软件包时,这不会删除作为依赖安装的软件包。假设这些软件包与其他任何软件包都不存在依赖关系,并且没有将它们标记为手动安装,则可以使用sudo apt autoremove或删除依赖关系(如果您也要删除其系统范围的配置文件)sudo apt --purge autoremove

  • 这不会删除非系统范围的配置文件。具体来说,它不会删除用户特定的配置:

    • 它不会删除.config由程序包提供的软件创建的位于用户主目录(或用户主目录的子目录)中的配置文件和目录。

      • 如果这些文件/文件夹未存储在中.config,则它们通常以.自身开头。无论哪种方式,您都可以ls使用-a-A标志来查看它们,并且可以在Nautilus和大多数其他文件浏览器/管理器中通过按Ctrl+ H或转到查看 > 显示隐藏文件查看它们
    • 它不会撤消对现有用户特定配置文件所做的更改。

    • 它不会删除新内容gconfdconf密钥,也不会撤消任何更改gconfdconf配置更改。

  • 使用purge--purge remove代替remove不会撤消对其他软件包提供的或用户手动创建的现有系统范围配置文件的更改。但是,有时通过卸载软件包来撤消此类更改(无论是a purge而不是a remove)。


61

使用命令:

sudo apt-get purge --auto-remove packagename

它将清除必需的软件包以及与这些软件包一起安装的依赖项。该--auto-remove选项与相似sudo apt-get autoremove


1
这解决了我的问题,尤其是使用certbot
T.Todua

7

您首先要签出要删除的软件包的名称:

dpkg --list

然后删除给定的包

sudo apt-get remove package_name

清除任何相关代码

sudo apt-get purge package_name

然后自动删除

sudo apt-get autoremove

最后,进行清洁,以确保一切均已正确删除

sudo apt-get clean

您想检查软件包列表,是否不再列出要删除的软件包,但是它是可选的。

祝你今天愉快,


4

在安装一个依赖包时,最好跟踪一下。

The following extra packages will be installed: 
    libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind

如果仅删除原始程序包,则依赖项程序包可能会保留。

所以您必须手动删除每个使用

apt-get purge package_name

1
如果我的控制台滚动得不够远,我如何获得这些软件包的列表
Luke Taylor

@LukeTaylor apt-get install package_name > output 然后 less output 滚动查看所有输出。
Harikrishnan

2

与其手动删除自动安装的从属软件包,不如使用以下命令:

 zanfilip @ zanfilip-VPCEB3L0E:〜/ jp / eclipse $ sudo apt-get --purge autoremove
    正在阅读包装清单...完成
    建立依赖树       
    正在读取状态信息...完成
    以下软件包将被删除
      libupstart1 * linux-headers-3.16.0-30 * linux-headers-3.16.0-30-generic *
      linux-image-3.16.0-30-generic * linux-image-extra-3.16.0-30-generic *
    0表示升级,0表示​​新安装,5表示删除,23表示不升级。
    此操作后,将释放279 MB磁盘空间。
    你想继续吗?[是/否]


2

如果要删除某些安全软件包,可以使用以下命令:

dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}'| xargs apt-get -y --purge autoremove

不要忘记“ -y”开关,因为否则apt-get会一直询问删除单个软件包的问题,​​不会删除任何东西。


2
这可能很有用,但也可能具有破坏性:它可以轻松匹配您真正不想删除的软件包,并无需确认就删除其配置!幸运的是,由于软件包名称从不包含空格,因此我们可以将其改掉并放下-yapt-get --purge autoremove $(dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}')。这样会更安全。
joeytwiddle

可能更安全地将命令运行为:dpkg --get-selections | grep PACKAGE_NAME | awk'{print $ 1}'首先,然后使用xargs运行它是一种更好的做法,以便用户看到由于命令而删除的内容。
Kerem Ersoy

0

您还有另一个选择,就是使用debfoster软件包。这将以交互方式查找和建议要删除(和清除)的软件包以及相关的软件包。

sudo apt install debfoster
sudo debfoster
# and optionally remove debfoster too
sudo purge debfoster
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.