Apt

如何使用 dpkg 獲取“提供”某些東西的軟體包列表?

  • March 17, 2013

我看到 dpkg 有一個包的“提供”欄位。

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

我怎麼知道哪些軟體包提供了即“編輯器”?

您可以通過使用來獲得所需的效果,而無需aptitude(這些天似乎不鼓勵)使用apt-cache showpkg,其中包括Reverse Provides. 通過一個小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;}

將其粘貼在 (for example).bashrc中,以便在 shell 載入時載入,並且可以執行provides <package>以獲取包的反向提供。

引用自:https://serverfault.com/questions/364608