如何列出所有不依赖任何软件包的软件包?

如何列出所有不依赖任何软件包的软件包?

首先介绍一下。我刚刚发现一个开发服务器安装了各种 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                                   
        }    
    }               
'

如果你想做相反的操作并列出至少有一个反向依赖的包,只需更改/:$//:$/!

相关内容