特定のリポジトリからインストールしたすべてのパッケージを一覧表示するにはどうすればよいですか?
メインのUbuntuアーカイブから入手できないインストール済みパッケージをすべて一覧表示し、それらがどのリポジトリに由来するかを確認するにはどうすればよいですか?(この質問の答えがわかっていれば、特定のPPA名についてそのリストをgrepして、最初の質問の答えを見つけることができます。)
特定のリポジトリからインストールしたすべてのパッケージを一覧表示するにはどうすればよいですか?
メインのUbuntuアーカイブから入手できないインストール済みパッケージをすべて一覧表示し、それらがどのリポジトリに由来するかを確認するにはどうすればよいですか?(この質問の答えがわかっていれば、特定のPPA名についてそのリストをgrepして、最初の質問の答えを見つけることができます。)
回答:
Ubuntu Software Centerの「Installed Software」アイテムを展開します。有効にしたすべての異なるリポジトリのリストが表示されます。リポジトリをクリックすると、それぞれからインストールしたパッケージが表示されます。
インストールされたパッケージの起源の記録はないようです。
同じ名前のパッケージのダウンロード元となる場所を取得することに問題がない場合は、から入手できます
apt-cache policy
。次の(ややい)スクリプトが、私にとってのトリックです。
LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
| fgrep ':install ok installed' \
| cut -d: -f1 \
| (while read pkg; do
inst_version=$(apt-cache policy $pkg \
| fgrep Installed: \
| awk '{ print $2 }');
origin=$(apt-cache policy "$pkg" \
| fgrep " *** ${inst_version}" -C1 \
| tail -n 1 \
| cut -c12-);
echo $pkg $origin;
done)
これは非常に壊れやすいことに注意してくださいapt-cache policy
。これは、バージョンごとに変化する可能性のあるの出力を想定しているためです...
Synaptic Package Managerを開き、左側のサイドバーの下部にある[Origin]ボタンをクリックします。ソースがリストされます。ソースを選択して、使用可能なパッケージまたはインストールされているパッケージを確認します。
このスクリプトは、インストールされ、PPAで利用可能なパッケージをリストします。
#!/bin/sh
# Give PPA name as an argument, e.g. ppa:oibaf/graphics-drivers
name1="$(echo "$1"|cut -d: -f2|cut -d/ -f1)"
name2="$(echo "$1"|cut -d/ -f2)"
awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' \
/var/lib/apt/lists/*"$name1"*"$name2"*Packages |
xargs dpkg-query -W -f='${Status} ${Package}\n' 2>/dev/null | awk '/^[^ ]+ ok installed/{print $4}'
ところで、使用からPPAを削除するには、ppa-purgeプログラムを使用してください。ここで改良バージョンを作成しました。
Quantal(12.10)で、原点ラインのスペースを削除する必要があります。
LC_ALL=C dpkg-query --showformat='${Package}:${Status}\n' -W '*' \
| fgrep ':install ok installed' \
| cut -d: -f1 \
| (while read pkg; do
inst_version=$(apt-cache policy $pkg \
| fgrep Installed: \
| cut -d: -f2-);
origin=$(apt-cache policy "$pkg" \
| fgrep " ***${inst_version}" -C1 \
| tail -n 1 \
| cut -c12-);
echo $pkg $origin;
done)