Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I installed many packages from many PPAs on my system. I want to list all the installed packages which are installed from launchpad PPAs, not repositories.

Is this possible through command-line?

share|improve this question
Possible Duplicate?… – Mitch Apr 13 '14 at 8:42
No.its a different one. – Avinash Raj Apr 13 '14 at 8:46
Not a command line utility, but very useful is the Y PPA Manager. Lists, installs, and removes packages from PPAs. – Jos Apr 13 '14 at 8:52

The following command returns the package name and its ppa (if installed from a 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 gives only the installed packages after grep -v deinstall$
  • awk '{ print $1 }' returns only the package name
  • perl -e '@a = <>; $a=join("", @a)' concatenates all the lines returned by apt-cache policy
  • $a =~ s/\n(\S)/\n\n$1/g; adds a newline between each package section
  • @packages = split("\n\n", $a); is a perl array containing all the packages infos, one package per item.
  • foreach $p (@packages) {print "$1: $2\n" if $p =~ /^(.*?):.*?500 http:\/\/ppa\.launchpad\.net\/(.*?)\s/s} is a loop where the package and the ppa are printed if a ppa with prio 500 is found in the policy.
share|improve this answer
Short answer/code, looong time for execution. – Radu Rădeanu Apr 13 '14 at 15:00
@Avinash: did you test my answer? if so could you please consider accept it? Thanks. – Sylvain Pineau Apr 18 '14 at 15:40

In accordance with this answer and this post, you can get a list of all packages from all the PPAs installed on your system using the following bash code:

for APT in $(find /etc/apt/ -name \*.list); do
  grep -o "^deb[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

And in accordance with this answer, you can get a list of all installed packages in your system using:

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

Now, let's join these two ideas to get a list of all the packages which are installed from PPAs:

(for APT in $(find /etc/apt/ -name \*.list); do
  grep -o "^deb[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; dpkg --get-selections | grep -v deinstall | cut -f1) | sort | awk 'dup[$0]++ == 1'
share|improve this answer

The source of an installed package can be checked using apt-cache, for example

$ apt-cache policy oracle-java7-installer

  Installed: 7u51-0~webupd8~7
  Candidate: 7u51-0~webupd8~7
  Version table:
 *** 7u51-0~webupd8~7 0
        500 precise/main i386 Packages
        100 /var/lib/dpkg/status

The output of apt-cache policy <package_name> contains the source.

One can use the following script to obtain the list of packages installed from PPAs.

echo "List of packages which are not installed from Ubuntu repository"
for i in `dpkg -l | grep "^ii" | awk '{print $2}'`
    j=`apt-cache policy "$i" | grep ""` 
    if [ $? -eq 0 ]; then
        echo "$i"
        #echo "$i $j"
share|improve this answer
It doesn’t work if you selected a different mirror. For instance I have gir1.2-syncmenu-0.1 500 saucy/main amd64 Packages – Sylvain Pineau Apr 13 '14 at 12:20
In this case google-chrome-stable is not installed from a PPA; it has just a separate repository. – Radu Rădeanu Apr 13 '14 at 13:53
Ok, I saw that. But you came with a really bad example which can make novice users to think that if a package is not from Ubuntu repositories, then the package is from a PPA. The OP's question is about PPAs. – Radu Rădeanu Apr 13 '14 at 14:27
@RaduRădeanu I got your points and Edited my post. you are absolutely correct. – souravc Apr 13 '14 at 14:49
Better now, even if there is a problem with the time for execution which is realy looong. – Radu Rădeanu Apr 13 '14 at 15:05

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.