查找特定软件包安装了哪些其他软件包?

我有一个简单的问题。
当你使用apt-get install安装一个软件包时,通常它会同时安装几个依赖包和主要的软件包。我想知道是否有一种方法可以完全撤销这个安装。通常情况下,删除主要的软件包会留下几个依赖包。例如,最近我安装了kubuntu-desktop。想要完全删除它,我不得不按照这个页面上的说明进行操作:

http://www.psychocats.net/ubuntu/puregnome

我想确切地知道他们获取了有关卸载所有软件包的信息。
谢谢任何帮助!

有一个叫做deborphan的程序,它具备这种功能。 - boehj
4个回答

在大多数情况下,apt-get的autoremove命令可以解决问题,它会删除所有已安装并标记为“自动”安装的软件包,但不是任何其他已安装软件包所需的。当主要软件包不是元软件包时,这是首选且安全的方法。
对于像kubuntu-desktop这样的元软件包,情况并非如此,这是因为作为安装元软件包的结果而安装的软件包没有被标记为自动安装,因此无法通过autoremove来删除。
删除所有被给定元软件包(如kubuntu-desktop)依赖或推荐的软件包可能是危险的,因为其中一些软件包可能在安装元软件包之前就存在于您的系统中。
在我看来,最安全的方法是分析/var/log/dpkg.log及其祖先,查看在给定有问题软件包安装时间戳周围的时间戳上安装了哪些软件包。我建议使用一个命令来获取涉及日志文件串联的更简洁和清理过的视图。
less $(ls -rt /var/log/dpkg.log*) |
  awk '$3 ~ /^(install|upgrade|remove|purge)$/' |
  less

我所做的是使用apt-get remove卸载所有听起来像KDE的东西,然后仔细查看要删除的软件包列表中是否有您想保留的内容。如果您想在列表中保留某些内容,则无法删除您开始要删除的软件包。 - Mei

使用apt-cache depends命令列出一个元包中的所有软件包。
apt-cache depends kxstudio-meta-audio-plugins-lv2
kxstudio-meta-audio-plugins-lv2
  Depends: carla-lv2
  Depends: carla
  Depends: carla-dbg
  Depends: abgate
  Depends: avldrums.lv2
  Depends: drmr
  Depends: eq10q
  Depends: freaked-plugins
  (...)

试试debfoster。首先使用sudo apt-get install debfoster安装它,然后运行sudo debfoster kubuntu-desktop。它将删除作为kubuntu-desktop的一部分安装的所有元包。

我认为找出类似kubuntu-desktop(或任何其他软件包)附带的软件包的最简单方法是查看http://packages.ubuntu.com/。这个网站提供了官方软件仓库中每个软件包所需、推荐和建议安装的详细列表。
对于10.10版本,kubuntu-desktop软件包位于这里:http://packages.ubuntu.com/maverick/kubuntu-desktop
如果某个软件包标记为“depends”,则它是该软件包正常运行所必需的。如果标记为“recommends”,则默认情况下会安装,但不是必需的(使用apt-get install --no-install-recommends命令可以阻止其被安装),而“suggested”则完全是可选项,不会默认安装。
您还可以在Synaptic软件包管理器中进行检查(默认已安装 - 在管理菜单中)。右键单击任何软件包,选择“属性”,选择“依赖项”选项卡,并确保下拉菜单选择的是“Dependencies”。这将显示与packages.ubuntu.com上找到的相同信息。
据我所知,这两种方法都列出了当前软件包的直接依赖项,但不包括依赖项的依赖项。虽然我不能百分之百确定,但这也不会让我感到惊讶。
如果您通过apt-get安装软件包,并且它正在拉取依赖项和推荐的软件包,在按下“y”键之前,您可以始终复制将要安装的软件包列表。然后稍后您可以将该列表插入apt-get remove命令中,这样就可以将其全部删除。只需确保您安装的其他任何东西(您希望保留的)也不依赖于将要被删除的任何内容。
另一个有用的工具是apt-get autoremove。它将删除您没有手动安装的任何东西(作为依赖项或建议的软件包),而这些软件包是某个已不再安装的软件的依赖项。根据我的经验,对于像kubuntu-desktop这样的元软件包,这种方法并不总是有效。