我有一个简单的问题。
当您使用 安装软件包时apt-get install
,通常会安装几个依赖包以及主包。我想知道是否有办法完全逆转此安装。通常,删除主包会留下几个包。例如,我最近安装了kubuntu-desktop
。想要完全删除它,我必须按照此页面上的说明进行操作:
http://www.psychocats.net/ubuntu/puregnom
我想确切地知道他们是如何获得有关所有要卸载的软件包的信息的。
谢谢你的帮助!
答案1
在大多数情况下,autoremove
命令apt-get
会起作用,它将删除所有已安装并标记为的软件包自动地已安装,但其他已安装的软件包不需要。当主软件包不是元软件包时,这是首选且安全的方法。
对于像 这样的元包来说情况并非如此kubuntu-desktop
,这是因为作为元包安装结果而安装的包没有被标记为自动安装,因此无法被 删除autoremove
。
删除所有标记为依赖项或由给定元包推荐的软件包(如kubuntu-desktop
)可能会很危险,因为其中一些软件包可能位于您的系统中前元包的安装。
我认为,最安全的方法是分析/var/log/dpkg.log
及其祖先,以查看哪些软件包是在给定有问题的软件包安装的时间戳附近安装的。我建议使用一个命令来更简洁、更清晰地查看相关日志文件的连接:
less $(ls -rt /var/log/dpkg.log*) |
awk '$3 ~ /^(install|upgrade|remove|purge)$/' |
less
答案2
用于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
(...)
答案3
尝试一下debfoster
。首先使用 安装它sudo apt-get install debfoster
然后运行sudo debfoster kubuntu-desktop
。它将删除作为 的一部分安装的所有元包kubuntu-desktop
。
答案4
我认为找出 kubuntu-desktop 之类的软件包(或任何其他软件包)附带的软件包的最简单方法是查看http://packages.ubuntu.com/。这为您提供了通过官方存储库可用的每个软件包所需、推荐和建议的所有内容的详细列表。
对于 10.10,kubuntu-desktop 包位于此处:http://packages.ubuntu.com/maverick/kubuntu-desktop
如果某个软件包被标记为“依赖”,则它是软件包正常运行所必需的。如果某个软件包被标记为“推荐”,则它会被默认安装,但不是必需的(apt-get install --no-intstall-recommends 将阻止它们被安装),而建议的软件包纯粹是可选的,不会默认安装。
您还可以检查 synaptic 包管理器(默认情况下已安装 - 我相信是在管理菜单中)。右键单击任何包并选择属性,选择依赖项选项卡,并确保下拉菜单位于“依赖项”上。这将向您显示与 packages.ubuntu.com 上相同的信息。
据我所知,这两种方法都会列出当前包的直接依赖项,但不会列出依赖项的依赖项。我对此并不完全确定,但这不会让我感到惊讶。
如果您通过 apt-get 安装软件包,并且它正在提取依赖项和推荐软件包,那么在按下“y”键之前,您可以随时复制将要安装的软件包列表。然后,您可以将该列表插入 apt-get remove,它应该会删除所有这些。只需确保您安装的其他任何内容(您想要保留的内容)都不依赖于将要删除的内容即可。
另一个有用的工具是 apt-get autoremove。它将删除任何您未手动安装的程序(作为依赖项或建议的软件包引入),这些程序是不再安装的程序的依赖项。根据我的经验,这并不总是适用于 kubuntu-desktop 等元软件包。