PPAからインストールされたすべてのパッケージをリストする方法は?


23

システムに多くのPPAから多くのパッケージをインストールしました。リポジトリではなく、ランチパッドPPAからインストールされるすべてのインストール済みパッケージをリストしたい。

これはコマンドラインから可能ですか?



いいえ、別のものです。
アビナッシュラジ

1
コマンドラインユーティリティではありませんが、Y PPA Managerが非常に便利です。PPAからパッケージをリスト、インストール、および削除します。
ジョス

回答:


23

次のコマンドは、パッケージ名とそのppa(ppaからインストールされている場合)を返します。

apt-cache policy $(dpkg --get-selections | grep -v deinstall$ | awk '{ print $1 }') | perl -e '@a = <>; $a=join("", @a); $a =~ s/\n(\S)/\n\n$1/g;  @packages = split("\n\n", $a); foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}'

詳細:

  • dpkg --get-selections インストールされたパッケージのみを与えます grep -v deinstall$
  • awk '{ print $1 }' パッケージ名のみを返します
  • perl -e '@a = <>; $a=join("", @a)' によって返されたすべての行を連結します apt-cache policy
  • $a =~ s/\n(\S)/\n\n$1/g; 各パッケージセクションの間に改行を追加します
  • @packages = split("\n\n", $a); は、すべてのパッケージ情報を含むperl配列で、アイテムごとに1つのパッケージです。
  • foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s} prio 500のppaがポリシーで見つかった場合、パッケージとppaが出力されるループです。

短い回答/コード、実行に時間がかかります。
ラドゥラデアヌ14

@Avinash:私の答えをテストしましたか?もしそうなら、あなたはそれを受け入れることを検討してもらえますか?ありがとう。
シルヴァンピノー14

7

aptitude次のコマンドは、アクティブなPPAのインストール済みパッケージのリストを表示しsources.listます。

aptitude search '?narrow(?installed, ~Oppa)'

リファレンス: aptitude-検索用語リファレンス


1
aptitude +1 のもう1つのクールな機能
Ravexina

3

この回答この投稿に従って、次のbashコードを使用して、システムにインストールされているすべてのPPAからすべてのパッケージのリストを取得できます。

for APT in $(find /etc/apt/ -name \*.list); do
  grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
    USER=$(echo $ENTRY | cut -d/ -f4)
    PPA=$(echo $ENTRY | cut -d/ -f5)
    awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*$USER*$PPA*Packages
    done
done

この回答に従って、システムにインストールされているすべてのパッケージのリストを取得できます:

dpkg --get-selections | grep -v deinstall | cut -f1

次に、これらの2つのアイデアに参加して、PPAからインストールされるすべてのパッケージのリストを取得しましょう。

(for APT in $(find /etc/apt/ -name \*.list); do
  grep -o "^deb http://ppa.launchpad.net/[a-z0-9\-]\+/[a-z0-9\-]\+" $APT | while read ENTRY ; do
    USER=$(echo $ENTRY | cut -d/ -f4)
    PPA=$(echo $ENTRY | cut -d/ -f5)
    awk '$1 == "Package:" { if (a[$2]++ == 0) print $2; }' /var/lib/apt/lists/*$USER*$PPA*Packages
    done
done; dpkg --get-selections | grep -v deinstall | cut -f1) | sort | awk 'dup[$0]++ == 1'

3

インストールされたパッケージのソースは、apt-cacheたとえばを使用して確認できます

$ apt-cache policy oracle-java7-installer

oracle-java7-installer:
  Installed: 7u51-0~webupd8~7
  Candidate: 7u51-0~webupd8~7
  Version table:
 *** 7u51-0~webupd8~7 0
        500 http://ppa.launchpad.net/webupd8team/java/ubuntu/ precise/main i386 Packages
        100 /var/lib/dpkg/status

の出力にapt-cache policy <package_name>はソースが含まれています。

次のスクリプトを使用して、PPAからインストールされたパッケージのリストを取得できます。

#!/bin/bash
echo "List of packages which are not installed from Ubuntu repository"
for i in `dpkg -l | grep "^ii" | awk '{print $2}'`
do
    j=`apt-cache policy "$i" | grep "ppa.launchpad.net"` 
    if [ $? -eq 0 ]; then
        echo "$i"
        #echo "$i $j"
    fi
done

1
別のミラーを選択した場合は機能しません。たとえば、私が持っているgir1.2-syncmenu-0.1 500 http://ubuntu.univ-nantes.fr/ubuntu/ saucy/main amd64 Packages
シルヴァンピノー

この場合google-chrome-stable、PPAからインストールされません。別個のリポジトリーがあります。
ラドゥラデアヌ14

わかりました。しかし、初心者ユーザーにパッケージがUbuntuリポジトリからのものではない場合、そのパッケージはPPAからのものであると思わせるような非常に悪い例があります。OPの質問はPPAに関するものです。
ラドゥラディアナヌ

@RaduRădeanuあなたのポイントを得て、私の投稿を編集しました。あなたは絶対に正しいです。
souravc

実行時間に問題があったとしても、それは本当に良いことです。
ラドゥラディアナヌ14

1

synapticをインストールします。その後、「origin」または他のカスタムフィルタでパッケージを参照できます。

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