特定のリポジトリからインストールしたすべてのパッケージを一覧表示するにはどうすればよいですか?


51

特定のリポジトリからインストールしたすべてのパッケージを一覧表示するにはどうすればよいですか?

メインのUbuntuアーカイブから入手できないインストール済みパッケージをすべて一覧表示し、それらがどのリポジトリに由来するかを確認するにはどうすればよいですか?(この質問の答えがわかっていれば、特定のPPA名についてそのリストをgrepして、最初の質問の答えを見つけることができます。)


このための既存のコマンドラインツールは(残念ながら)存在しないように思われるため、GUIの回答の1つを受け入れます。
マリウスゲドミナス

回答:


24

Ubuntu Software Centerの「Installed Software」アイテムを展開します。有効にしたすべての異なるリポジトリのリストが表示されます。リポジトリをクリックすると、それぞれからインストールしたパッケージが表示されます。

代替テキスト


このオプションはUbuntu 10.10でのみ使用できるのではないか、何か不足していますか?私のソフトウェアセンターでは、そのメニューの下にソースは表示されません。
lovinglinux

2
私のバージョンでは、上部に「インストール済み」ドロップダウンがあります。私は、そのオプションを選択すると、私はさまざまなソース(purchse用コア、PPA ...)を選択することができます
アレクシス・ヴィルケ

Ubuntu 16.04では、このページは使用できなくなりました。ただし、シナプスにも同様の機能があります。左下の「Origin」をクリックします。
ジョシュ

26

インストールされたパッケージの起源の記録はないようです。

同じ名前のパッケージのダウンロード元となる場所を取得することに問題がない場合は、から入手できます 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。これは、バージョンごとに変化する可能性のあるの出力を想定しているためです...


ええ、これは基本的にゼロからツールを書くことを意味します。そして、PerlまたはPythonを使用した/ var / lib / apt / listsの解析は、より高速で堅牢になります。
マリウスゲドミナス

ここでは、2018年に正常に動作します:)ありがとう!
N0rbert

UbuntuとDebianでテストした同様のソリューションを開発しました。
ファムザ

23

Synaptic Package Managerを開き、左側のサイドバーの下部にある[Origin]ボタンをクリックします。ソースがリストされます。ソースを選択して、使用可能なパッケージまたはインストールされているパッケージを確認します。


4

このスクリプトは、インストールされ、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プログラムを使用してください。ここで改良バージョンを作成しました。


3

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.