システムに多くのPPAから多くのパッケージをインストールしました。リポジトリではなく、ランチパッドPPAからインストールされるすべてのインストール済みパッケージをリストしたい。
これはコマンドラインから可能ですか?
次のコマンドは、パッケージ名とその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);
は、すべてのパッケージ情報(アイテムごとに1つのパッケージ)を含むPerl配列です。foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s}
は、prio 500のppaがポリシーで見つかった場合にパッケージとppaが出力されるループです。以下のコマンドは、sources.listにあるアクティブなPPAのインストール済みパッケージを表示します
aptitude search '?narrow(?installed, ~Oppa)'
インストールされたパッケージのソースは、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
this answer および this post に従って、次の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'
synaptic をインストールします。その後、「Origin」または他のカスタムフィルタでパッケージを参照できます。