web-dev-qa-db-fra.com

Comment lister tous les paquetages installés à partir de PPA?

J'ai installé de nombreux packages de nombreux PPA sur mon système. Je souhaite répertorier tous les packages installés qui sont installés à partir de PPA du tableau de bord, et non de référentiels.

Est-ce possible via la ligne de commande?

20
Avinash Raj

La commande suivante renvoie le nom du package et son ppa (s'il est installé à partir d'un 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}'

Détails:

  • dpkg --get-selections ne donne que les packages installés après grep -v deinstall$
  • awk '{ print $1 }' renvoie uniquement le nom du package
  • Perl -e '@a = <>; $a=join("", @a)' concatène toutes les lignes renvoyées par apt-cache policy
  • $a =~ s/\n(\S)/\n\n$1/g; ajoute une nouvelle ligne entre chaque section du paquet
  • @packages = split("\n\n", $a); est un tableau Perl contenant toutes les informations sur les packages, un package par élément.
  • foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s} est une boucle dans laquelle le package et le ppa sont imprimés si un ppa avec prio 500 est trouvé dans la stratégie.
20
Sylvain Pineau

La commande ci-dessous montre les paquets installés pour les PPA actifs dans sources.list

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

Référence: aptitude - Référence du terme de recherche

5
user.dz

La source d'un paquet installé peut être vérifiée en utilisant apt-cache, par exemple

$ 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

La sortie de apt-cache policy <package_name> contient la source.

On peut utiliser le script suivant pour obtenir la liste des paquetages installés à partir de 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
3
souravc

Conformément à cette réponse et cet article , vous pouvez obtenir la liste de tous les packages de tous les PPA installés sur votre système à l'aide du code bash suivant:

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

Et conformément à cette réponse , vous pouvez obtenir une liste de tous les packages installés sur votre système en utilisant:

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

Maintenant, joignons ces deux idées pour obtenir une liste de tous les paquets installés à partir de 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
Radu Rădeanu

Installez synaptic . Vous pouvez ensuite parcourir les packages en fonction de "Origin" ou même de tout autre filtre personnalisé.

0
ilias iliadis