Saya menginstal banyak paket dari banyak PPA di sistem saya. Saya ingin mendaftar semua paket yang diinstal yang diinstal dari PPA launchpad, bukan repositori.
Apakah ini mungkin melalui command-line?
Saya menginstal banyak paket dari banyak PPA di sistem saya. Saya ingin mendaftar semua paket yang diinstal yang diinstal dari PPA launchpad, bukan repositori.
Apakah ini mungkin melalui command-line?
Jawaban:
Perintah berikut mengembalikan nama paket dan ppa-nya (jika diinstal dari 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}'
Detail:
dpkg --get-selections hanya memberikan paket yang diinstal setelah grep -v deinstall$awk '{ print $1 }' hanya mengembalikan nama paketperl -e '@a = <>; $a=join("", @a)' menyatukan semua baris yang dikembalikan oleh apt-cache policy$a =~ s/\n(\S)/\n\n$1/g; menambahkan baris baru antara setiap bagian paket@packages = split("\n\n", $a); adalah array perl yang berisi semua paket info, satu paket per item.foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s} adalah loop di mana paket dan ppa dicetak jika ppa dengan prio 500 ditemukan dalam polis.aptitudeperintah di bawah ini menunjukkan daftar paket yang diinstal untuk PPA aktif di sources.list.
aptitude search '?narrow(?installed, ~Oppa)'
Referensi: aptitude - Referensi istilah pencarian
aptitude +1
Sesuai dengan jawaban ini dan posting ini , Anda bisa mendapatkan daftar semua paket dari semua AKP yang diinstal pada sistem Anda menggunakan kode bash berikut:
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
Dan sesuai dengan jawaban ini , Anda bisa mendapatkan daftar semua paket yang diinstal di sistem Anda menggunakan:
dpkg --get-selections | grep -v deinstall | cut -f1
Sekarang, mari bergabung dengan dua ide ini untuk mendapatkan daftar semua paket yang diinstal dari 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'
Sumber paket yang diinstal dapat diperiksa menggunakan apt-cache, misalnya
$ 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
Output apt-cache policy <package_name>berisi sumber.
Seseorang dapat menggunakan skrip berikut untuk mendapatkan daftar paket yang diinstal dari 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
gir1.2-syncmenu-0.1 500 http://ubuntu.univ-nantes.fr/ubuntu/ saucy/main amd64 Packages
google-chrome-stableini tidak diinstal dari PPA; hanya memiliki repositori terpisah.
Instal sinaptik . Anda kemudian dapat menelusuri paket dengan "asal" atau bahkan filter kustom lainnya.