APTパッケージがインストールするすべてのファイルをどのようにリストできますか?

APTパッケージがインストールするすべてのファイルをどのようにリストできますか?

これは次のようになります。APTパッケージでインストールされているすべてのファイルを一覧表示するには?しかし、どのファイルがあるのか​​知りたいです。〜するまだパッケージがインストールされていないため、インストールが必要です。

例:APTパッケージがインストールするすべてのファイルを一覧表示したいですxorg。つまり、私が入力している間に作成できるすべてのファイルですapt install xorg。ただし、その依存関係の直接ファイルではなく - のみが一覧表示されますapt-filexorg

$ apt-file list xorg
xorg: /usr/share/bug/xorg/script
xorg: /usr/share/doc/xorg/changelog.gz
xorg: /usr/share/doc/xorg/copyright
xorg: /usr/share/lintian/overrides/xorg

どのようにリストを上げることができますか?みんな関連文書?

(答えとして不都合なパイプの組み合わせを追加しますbash。それが私が今使っているものですが、呼び出しが多いループに過ぎないのでapt-file非常に遅いです。より良い答えを探しています。)

答え1

apt-file list以下を使用して、一度に処理するパッケージのリストを提供できます。

apt-file -f-

(標準入力から読み取る)。私の測定結果

apt-get -s install xorg | awk '/^Inst / { print $2 }' | apt-file -f- list

ループを使用するのと同じプロセスよりも2倍以上高速ですapt-file(使用)xargs

sort -k2,2関連パッケージを見るのが楽しかったので後処理しました。

apt-get -s install後処理の代わりに使用すると、apt-cache depends xorgシステムにインストールされているすべてのパッケージが考慮され、再帰依存関係を含むそのパッケージのみが考慮されます。直接の依存関係apt-cache depends xorgのみxorgが表示され、後処理では代替を処理しません。

答え2

これが私が今使っているものですが、問題がある可能性があり、確かにパフォーマンスがあまり良くありません。

apt-cache depends xorg | grep '..\(Depends\|Recommends\): [^<]' | sed 's/[^:]*: //' | while read LINE; do [[ -z "$LINE" ]] || apt-file list "$LINE"; done | sed 's/[^:]*: //' | sort

ステップバイステップ:

インストールするパッケージのリストを取得します。

apt-cache depends xorg

「次に異なる」と「推奨」項目を選択します。

grep '..\(Depends\|Recommends\): [^<]'

パッケージ名を除くすべての項目を削除します。

sed 's/[^:]*: //'

行が空でない場合は、apt-file各パッケージ名で実行します。

while read LINE; do [[ -z "$LINE" ]] || apt-file list "$LINE"; done

apt-file listファイルの対応するパッケージ名で始まる各行を返します。ファイル名のみを残し、その行からパッケージ名を削除します。

sed 's/[^:]*: //'

行の並べ替え:

sort

関連情報