找出使用特定包安装的软件包?

我有一个简单的问题。

使用apt-get install安装软件包时,通常会安装多个依赖软件包以及主要的依赖软件包。 我想知道是否有办法彻底扭转这种安装。 通常,移除主包将留下几个包。 例如,我最近安装了kubuntu-desktop 。 要完全删除它,我必须按照此页面上的说明操作:

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

我想确切地知道他们是如何获得有关要卸载的所有软件包的信息。

谢谢你的帮助!

在大多数情况下, apt-getautoremove命令可以解决这个问题,它将删除所有已安装并标记为自动安装的软件包,但不会被任何其他已安装的软件包所需。 当主包不是元数据包时,这是首选且安全的方法。

对于像kubuntu-desktop这样的元数据包不是这种情况,这是因为安装元数据包而安装的软件包没有标记为自动安装,因此无法通过autoremove删除。

删除标记为给定元数据包(例如kubuntu-desktop依赖关系或推荐的所有包可能很危险,因为在安装元数据包之前 ,某些包可能在您的系统上。

在我看来,最安全的方法是对/var/log/dpkg.log及其祖先进行分析,以查看在给定违规软件包的安装时间戳周围的时间戳中安装了哪些软件包。 我建议一个命令来获得更简洁和清理的相关日志文件串联的视图:

 less $(ls -rt /var/log/dpkg.log*) | awk '$3 ~ /^(install|upgrade|remove|purge)$/' | less 

我认为找出像kubuntu-desktop(或任何其他软件包)之类的软件包的最简单方法是查看http://packages.ubuntu.com/ 。 这将为您提供详细的列表,列出通过计算机存储库提供的每个软件包所需的,建议的和建议的所有内容。

对于10.10,kubuntu-desktop软件包位于: http : //packages.ubuntu.com/maverick/kubuntu-desktop

如果某些东西被标记为“依赖”,则包需要正常运行。 如果它被标记为“推荐”,则默认安装它,但不是必需的(apt-get install –no-intstall-recommended将阻止它们被安装),并且建议纯粹是可选的,默认情况下不安装。

您也可以检查synaptic包管理器(默认情况下安装 – 在我认为的管理菜单中)。 右键单击任何包并选择“属性”,选择“依赖关系”选项卡,并确保下拉列表为“依赖关系”。 这将显示您在packages.ubuntu.com上找到的相同信息。

据我所知,这两种方法都列出了当前包的直接依赖关系,但没有列出依赖关系的依赖关系。 我不是百分之百,但我不会感到惊讶。

如果您通过apt-get安装软件包并且它正在提取依赖项和推荐的软件包,那么在您点击“y”键之前,您始终可以复制将要安装的软件包列表。 然后你可以将该列表插入到apt-get remove中,它应该摆脱所有这些。 只要确保你安装的任何其他东西(你想要保留)也取决于将被删除的任何东西。

另一个有用的工具是apt-get autoremove。 这将删除您未手动安装的任何内容(它作为依赖项或建议包提供),这是不再安装的内容的依赖项。 根据我的经验,这并不总是适用于像kubuntu-desktop这样的元数据包。

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

使用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 (...)