首先介绍一下。我刚刚发现一个开发服务器安装了各种 GUI 包。我想知道为什么。因此,我想知道安装了哪些需要 X 的软件。
我可以通过回答两个密切相关的问题来回答这个问题:
- 如何列出所有已安装且其他软件包不依赖的软件包?
- 如何列出所有已安装的、其他软件包均不依赖且直接或间接依赖于给定软件包的软件包?(例如,
x11-common
。)
对于第一个问题,apt-mark showmanual
是一个有用的近似值,但可能不完全正确。
对于第二个问题,我现在用的是对输出进行后处理apt-rdepends
,仅列出没有列出依赖项的结果。
这是正确的吗?有没有更简单的方法?我注意到结果包含相当多未标记为手动安装的软件包。
我需要在 Ubuntu 14.04、16.04 和 18.04 上使用这个。
答案1
例如,您可以使用 列出所有已安装的软件包,dpkg-query
然后将软件包名称传递给 以apt-cache
查看它们是否有任何反向依赖关系。以下是执行此操作的一种方法:
#!/bin/sh
dpkg-query --show --showformat='${Package}\t${Status}\n' | sed --quiet '
/installed$/{
s/^/apt-cache rdepends --installed /
e
s/\n/ /g
/:$/{
s/\s.*//
p
}
}
'
如果你想做相反的操作并列出至少有一个反向依赖的包,只需更改/:$/
为/:$/!