运行“apt-get remove dependency-names”后,“dpkg -l”中仍然存在依赖项

运行“apt-get remove dependency-names”后,“dpkg -l”中仍然存在依赖项

我怀疑安装xfce4在 Ubuntu 中会导致一些问题,所以我使用 删除了它们apt-get remove xfce4 xfce4-goodeis

但是当我运行“dpkg -l”时,我仍然可以看到一些库和包xfce4

$ dpkg -l | grep -i xfce
rc  libexo-1-0:amd64                              0.10.2-2                                 amd64        Library with extensions for Xfce
rc  libgarcon-1-0                                 0.2.1-1                                  amd64        freedesktop.org compliant menu implementation for Xfce
rc  libxfce4ui-1-0                                4.11.0-0ubuntu1~ppa0.13.10.1             amd64        widget library for Xfce - Gtk+2 variant
rc  libxfce4ui-common                             4.11.0-0ubuntu1~ppa0.13.10.1             all          common files for libxfce4ui
rc  libxfce4util6                                 4.10.1-1                                 amd64        Utility functions library for Xfce4
rc  libxfcegui4-4                                 4.10.0-2                                 amd64        Basic GUI C functions for Xfce4
rc  libxfconf-0-2                                 4.10.0-2                                 amd64        Client library for Xfce4 configure interface
rc  mousepad                                      0.3.0-2                                  amd64        simple Xfce oriented text editor
rc  thunar                                        1.6.3-1ubuntu1                           amd64        File Manager for Xfce
rc  xfce4-appfinder                               4.10.1-1                                 amd64        Application finder for the Xfce4 Desktop Environment
rc  xfce4-clipman                                 2:1.2.3-2ubuntu1                         amd64        clipboard history utility
rc  xfce4-mixer                                   1:4.10.0-1ubuntu2                        amd64        Xfce mixer application
rc  xfce4-notes                                   1.7.7-3ubuntu2                           amd64        Notes application for the Xfce4 desktop
rc  xfce4-panel                                   4.10.1-1ubuntu1                          amd64        panel for Xfce4 desktop environment
rc  xfce4-power-manager                           1.2.0-2ubuntu1                           amd64        power manager for Xfce desktop
rc  xfce4-session                                 4.10.1-1ubuntu1                          amd64        Xfce4 Session Manager
rc  xfce4-settings                                4.11.1-0ubuntu1~ppa0.13.10.1             amd64        graphical application for managing Xfce settings
rc  xfce4-terminal                                0.6.2-3ubuntu1.1                         amd64        Xfce terminal emulator
rc  xfce4-volumed                                 0.2.0-0ubuntu1                           amd64        volume keys daemon
rc  xfdesktop4                                    4.11.2-0ubuntu1~ppa0.13.10.1             amd64        xfce desktop background, icons and root menu manager
rc  xfwm4                                         4.11.1-0ubuntu1~ppa0.13.10.1             amd64        window manager of the Xfce project

我复制粘贴了所有这些包\库来形成一个apt-get remove命令来删除所有这些依赖项,并且该命令运行正常,但运行后dpkg -l | grep -i xfce再次显示这些依赖项!

为什么仍然安装这些依赖项?

答案1

请注意rc列表开头的。

r:删除(标记为删除)
c:配置文件存在。

apt-get remove和之间的区别purge(来自man apt-get

   remove
       remove is identical to install except that packages are removed instead of installed.
       Note the removing a package leaves its configuration files in system.

   purge
       purge is identical to remove except that packages are removed and purged (any
       configuration files are deleted too).

当你选择时apt-get remove,你dpkg -l反映的是这一点。如果你习惯了,apt-get purge你就可以避免这种情况。要摆脱这些,请在终端中尝试,

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

它将清除所有标记为要删除的软件包。在清除它们之前,你可以使用以下命令检查要清除的软件包列表:

dpkg --list | grep "^rc" | cut -d " " -f 3 

我猜除了来自 的软件包之外,你没有其他软件包被标记为要删除xfce。如果你不确定。请使用以下命令:

dpkg --list | grep -i xfce | cut -d " " -f 3 | xargs sudo dpkg --purge

答案2

依赖关系如下不是仍安装。

当你跑步时dpkg -ldpkg调用dpkg-query。第一列(您所看到的rc)中的条目由两个单字母的缩写组成。

第一个字母指定软件包管理操作所指定的软件包的期望状态。r表示打算将其删除。这意味着它要么

  • 已被移除,或者
  • 已指定删除,但尚未完全删除或删除失败。

要查看是哪种情况,请查看第二个字母c。这表示从包中安装了什么。如果没有任何文件存在,第二个字母显示n(但实际上,由于您正在运行dpkg -l/dpkg --list而不带参数,然后解析输出,如果没有文件,该条目根本不会出现)。

c意味着所有安装的是配置文件。通常,假设用户在卸载软件包时想要删除这些内容是不安全的。如果您想要删除它们,您可以在卸载软件包时将--purge标志传递给apt-get(或指定purge操作而不是操作remove)。

要删除这些配置文件,即使软件包本身已被卸载,你仍然可以使用 或 来清除它们dpkg -P ...apt-get purge ...使用dpkg来清除许多软件包可能有点复杂apt-get会匹配常用表达(如grep)对于软件包名称。假设您想要一个简短的命令来删除所有这些软件包,并且*假设您确实想要删除xfce名称中包含的所有软件包,那么这将起作用:

sudo apt-get purge xfce.\*

*请注意不是通配符,.\*匹配零个或多个任意字符。.是实现这一点的必要条件(见下文)。此正则表达式相当于xfce,但它认可作为正则表达式,apt-get因为它包含特殊字符*

(类似地,如果您使用xfce\*或 ,xfce*它将删除xfc名称中带有 的所有软件包。人们试图通过删除 来摆脱 Wine wine*,但这导致win名称中任何地方带有 的每个软件包都被删除,从而破坏了他们的系统!)

或者,如果您更喜欢使用 进行清除dpkg,那么一个容易理解的方法(我认为这可以减少错误)就是告诉dpkg-list如何格式化其自己的输出:

sudo dpkg -P `dpkg-query -f='${Package}\n' -W | grep xfce`

或者您可以简单地运行dpkg-query -f='${Package} ' -W | grep xfce,让您检查输出以确保它是您想要的,然后将以空格分隔的包列表复制并粘贴到sudo apt-get purgesudo dpkg -P命令中。

相关内容