对于我已安装的每个软件包,我想知道如果我卸载哪些软件包。我需要的输出示例是(package: list of deps
):
abc: foo bar
bcd: baz abc
bdd: baz fuubar
附加
如果我检查ppp
使用apt-get
以下方法删除软件包,将真正删除哪些内容:
$ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2)
gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp
我发现它与apt-cache
显示给我的不同(我不认为它包括递归依赖项):
$ apt-cache show ppp | grep '^Breaks: '
Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1)
追加2
是否dpkg --get-selections | cut -f1
有可靠的方法来获取要迭代的已安装软件包的列表?
apt-get --dry-run remove
看起来基本上是正确的。它可能会错过某些仅由您删除的软件包才需要的自动安装的软件包才需要的自动安装的软件包。这就是为什么您不认为这是一个合适的答案?