会社のプライベートaptリポジトリからインストールされているパッケージのリストを取得しようとしています。
これは働きます:
#!/bin/bash
fqdn=$1
for pkg in $(dpkg-query --show | awk '{print $1;}'); do
if apt-cache showpkg $pkg | grep -q $fqdn; then
echo $pkg
fi
done
ただし、〜3466()パッケージがインストールされているシステムでそれを実行するにはdpkg -l | wc -l
1分45.812秒かかります。 「インストールされたパッケージをローカルで検索」がユーザーに表示されるのに時間がかかりすぎます。
もっと良い方法がありますか?
私は交互に行を読み取ろapt-cache showpkg
うとします。これはCLIインターフェイスが不安定で15分35.913秒かかるという警告です。apt show
APT-Sources:
ベストアンサー1
パッケージを繰り返さないでください。
dpkg -l | awk '/^ii/ { print $2 }' | xargs apt-cache showpkg |
awk "/^Package:/ { package = \$2 } /$1/ { print package }" | uniq
私のシステムはこれに数秒かかり、6,000を超えるパッケージをインストールして/var/lib/apt
直接使用しません。
いくつかの制限があります。特にどんなアイテムなのか確認しません。バージョン現在インストールされているバージョンはリポジトリで使用でき、Debianはパッケージが実際にインストールされているリポジトリを確認する方法を提供しません。