適切なパッケージの依存関係とインストールされたバージョンを再帰的にリストする方法は?

適切なパッケージの依存関係とインストールされたバージョンを再帰的にリストする方法は?

特定のパッケージの再帰依存関係をリストしたいと思います。現在インストールされている各依存関係のバージョンです。また、各行に項目があるので、ソートして区別できるようにしたいです。

tcpdump基本的に、出力が次のようになりたいとします。

libtext-wrapi18n-perl: 0.06-7
perl-base: 5.14.2-21+deb7u2

...など。各行の正確な形式は重要ではなく、重要なことは区別して整列する能力です。

質問APTにインストールされたパッケージの依存関係のリスト(再帰)同様ですが、パッケージのバージョンを提供していません。使用法はdebfoster -d有望に見えますが、その出力は追加の処理には適していません。

ベストアンサー1

すでに提供されている両方の答えには長所と短所があります。

解析が簡単なパッケージのリストが最初から提供されるため、debfoster以下はリクエストの結果を提供します。

apt-cache policy $(debfoster -q -d tcpdump|tail -n +2)|awk '/^[^ ]/ { package=$0 } /  Installed/ { print package " " $2 }'

tail最初の行をスキップしてawk単一の操作で結果を処理するために使用されます。 (コマンドオーバーライドを使用すると改行を避けることができます。)開始することは、すでにインストールされているパッケージに対してのみdebfosterこれを実行できることを意味しますdpkg

dpkg -l $(debfoster -q -d tcpdump|tail -n +2)

最初から始めると、apt-rdependsより難しいパッケージのリストが提供され、重複しているがまだインストールされていないパッケージを処理できるという利点があります。

apt-cache policy $(apt-rdepends -p tcpdump 2>| /dev/null|awk '/Depends/ {print $2}'|sort -u)|awk '/^[^ ]/ { package=$0 } /  Installed/ { print package " " $2 }'

これは次のコマンドで使用することもできますdpkg -l

dpkg -l $(apt-rdepends -p tcpdump 2>| /dev/null|awk '/Depends/ {print $2}'|sort -u)

ただし、これにはdpkg関連するすべてのパッケージに関する知識が必要であり、処理中のパッケージがインストールされていない場合はそうでない可能性があります。

debfosterRecommendsデフォルトで含まれているこの機能は、以下を使用して無効にできます--option UseRecommends=no

debfoster -q --option UseRecommends=no -d tcpdump

apt-rdependsRecommendsデフォルトでは含まれません。この機能は以下を使用して有効にできます-f Depends,PreDepends,Recommends -s Depends,PreDepends,Recommends

apt-rdepends -f Depends,PreDepends,Recommends -s Depends,PreDepends,Recommends -p tcpdump

debfosterこの場合、見つかったすべての依存関係を提供するわけではありません。 (たとえば、debfosterfindはvia、andtcpdumpに依存しますが、via、andには依存しません。)aptlibssl1.0.0debconfapt-utilsapt-rdepends

おすすめ記事