インストールされているパッケージのリストがあり、apt
すでにリストにある他のパッケージの依存関係であるすべてのパッケージを削除したいと思います。
https://gist.github.com/rubo77/bd9183fe2794467f482c
これらのパッケージは400を超えるが、ほとんどはこのリストの他のパッケージのためにインストールされました。
このリストの範囲を絞り込み、このリストの本当に興味深い主要プログラムにどのように固執できますか?
何とかこれを使用する必要があります:aptで特定のパッケージに依存するパッケージを見つける方法は?
それとも、楽しいプログラムと基本プログラムと一緒にインストールされている小さなヘルパーパッケージを区別するより簡単な方法はありますか?
ベストアンサー1
次のコードは、$package_name
リストの一部のパッケージが依存するパッケージのリストを印刷します。dpkg -s
インストールされているパッケージリストのデータを使用するために入力を渡すか、apt-cache show
利用可能なパッケージリストのデータを使用するために入力を渡すことができます。このコードは、PACKAGE1 | PACKAGE2
インポートする項目を決定する方がはるかに複雑であり、実際に大きな違いを生むことはないので、すべてのOR依存関係()をスキップします。
dpkg -s $package_names | awk -F '[:,] *' '
$1=="Depends" || $1=="Recommends" {
for (i=2; i<=NF; i++) {
if ($i ~ /\|/) continue;
sub(/ .*/, "", $i);
print $i
}
}'
ファイルをフィルタリングするには、Packages
次のawkスニペットを使用できます。
<Packages awk -v RS= -v packages="$package_names" '
BEGIN {split(packages, pa)}
$2 in pa
' | awk -F '[:,] *' '…'
これで、パッケージリストを含むテキストファイルがあると仮定すると、他のパッケージの依存関係であるパッケージを次のように削除できます。
comm -23 <(sort packages.txt) <(apt-cache show $(cat packages.txt) |
awk -F '[:,] *' ' '…' |
sort)
入力リストにあるが依存関係で見つからなかったパッケージが出力されます。