如何使用dpkg获取“提供”某些内容的软件包列表?

Modified on: Thu, 17 Oct 2019 10:40:02 +0800

我看到dpkg有一个“提供”字段用于包。

$ apt-cache show vim-tiny | grep Provides
Provides: editor
$

我如何知道哪些包提供,即“编辑”?

最佳答案

使用aptitude,其中包含apt-cache showpkg。通过一个小的sed脚本来管理它将摆脱其他的东西:

apt-cache showpkg <package> | sed '/Reverse Provides/,$!d'

使用awk可以实现稍微漂亮(但更长的类型)示例(仅列出包名称,而不是版本,并按字母顺序排序):

apt-cache showpkg httpd | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}'

...这可以通过uniq传输以删除重复项(由于反向提供的多个版本的软件包可能存在重复项)。请注意,uniq的使用对第一个版本没有帮助,因为uniq只会删除重复项,如果它们位于相邻行和sed版本不对输出进行排序。

最后,可以定义一个更容易使用的函数,如下所示:

provides () { apt-cache showpkg $1 | awk '/Pa/, /Reverse P/ {next} {print $1 | "sort"}' | uniq;}

坚持(例如).bashrc,以便在shell执行时加载,并且可以运行provides &lt;package&gt;到得到一个包的反向提供。

作者:Darael

相关问答

添加新评论