PPA'lardan kurulan tüm paketler nasıl listelenir?


23

Sistemime birçok PPA'dan birçok paket yükledim. Depoları değil, fırlatıcı PPA'lardan yüklenen tüm paketleri listelemek istiyorum.

Bu komut satırı üzerinden mümkün mü?



Numaralar farklı bir tane.
Avinash Raj

1
Bir komut satırı yardımcı programı değil, ancak çok yararlı bir Y PPA Yöneticisi . Paketleri PPA'lardan listeler, yükler ve kaldırır.
Jos

Verilen bir PPA'dan
Ciro Santilli,

Yanıtlar:


23

Aşağıdaki komut paket adını ve ppa'sını döndürür (eğer bir ppa'dan yüklenmişse):

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}'

Detaylar:

  • dpkg --get-selections sadece kurulu olan paketleri verir. grep -v deinstall$
  • awk '{ print $1 }' sadece paket ismini döndürür
  • perl -e '@a = <>; $a=join("", @a)' tarafından döndürülen tüm satırları birleştirir apt-cache policy
  • $a =~ s/\n(\S)/\n\n$1/g; Her paket bölümü arasına yeni bir satır ekler
  • @packages = split("\n\n", $a); öğe başına bir paket olmak üzere tüm paketleri içeren bir perl dizisidir.
  • foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s} poliçede prio 500 bulunan bir ppa bulunursa paketin ve ppa'nın yazdırıldığı bir döngüdür.

Kısa cevap / kod, yürütme için bekleme süresi.
Radu Rădeanu

@Avinash: Cevabımı test ettiniz mi? öyleyse lütfen kabul etmeyi düşünebilir misiniz? Teşekkürler.
Sylvain Pineau


3

Uyarınca bu cevap ve bu yazı , aşağıdaki bash kodu kullanarak sisteminizde yüklü tüm PPA'lar tüm paketlerin listesini alabilirsiniz:

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

Ve uyarınca bu cevap , kullanmakta sisteminizde yüklü paketlerin listesini alabilirsiniz:

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

Şimdi, PPA'lardan yüklenen tüm paketlerin bir listesini almak için bu iki fikri birleştirelim:

(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

Yüklenmiş bir paketin kaynağı, apt-cacheörneğin

$ 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

Çıktısı apt-cache policy <package_name>kaynağı içerir.

Biri PPA'lardan yüklenen paketlerin listesini almak için aşağıdaki betiği kullanabilir.

#!/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
Farklı bir ayna seçtiyseniz işe yaramaz. Mesela vargir1.2-syncmenu-0.1 500 http://ubuntu.univ-nantes.fr/ubuntu/ saucy/main amd64 Packages
Sylvain Pineau

Bu durumda google-chrome-stablebir PPA'dan kurulmaz; sadece ayrı bir havuza sahip.
Radu Rădeanu

Tamam, onu gördüm. Ancak acemi kullanıcıları, bir paketin Ubuntu depolarından değilse, o zaman paketin bir PPA'dan geldiğini düşünmelerini sağlayan gerçekten kötü bir örnekle geldiniz. OP'nin sorusu PPA'lar ile ilgili.
Radu Rădeanu

@ RaduRădeanu Puanlarınızı aldım ve yayınımı düzenledim. kesinlikle haklısın
souravc

Şimdi daha da iyisi, yürütme zamanıyla ilgili gerçek bir sorun olsa bile.
Radu Rădeanu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.