1

This is a Q&A-style thing --- hoping to help you in this period of new LTS release(s). There are a lot of links in this post, follow them and upvote them to give the authors the relevant kudos.

It is often suggested to remove or purge all of your PPAs when doing a version upgrade; I often have a lot of troubles remembering which PPA are installed and which packages are "owned" by a particular PPA --- you sometime install a PPA but that does not mean that you have installed all packages from it.

For the list of PPA there are quite a lot of good scripts around; and for discovering the packages really installed from a PPA you can use apt-cache policy or similar commands.

But --- what about a one-stop script to list all your installed PPAs and all the packages you have installed from them?

3

The following script will give you a list like the following:

PPA:tualatrix/ppa
--->  ubuntu-tweak
PPA:otto-kesselgulasch/gimp
--->  gimp
--->  gimp-data
--->  gimp-help-common
--->  gimp-help-en
--->  gimp-help-en-gb
--->  gimp-help-es
--->  gimp-help-it
--->  gimp-plugin-registry
--->  libgimp2.0
--->  libopenjpeg-dev
--->  libopenjpeg5

Script following (copy it to a file and make it executable):

#! /bin/bash
#
list_all_packages_repos() {
apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk '/^[^ ]/    { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; printf("%-40s %-50s %s\n", pkg, $2, $3) }
    /\*\*\*/      { nextline = 1 }'
    }

list_packages_of() { #1 is the tmpfile, $2 is the ppa regexp
    grep "$2" "$1" | awk '{print "---> ", $1}'
}

# cache all packages files now 

tmpfile=/tmp/list_pcks.$$.txt
list_all_packages_repos > $tmpfile

# listppa Script to get all the PPA installed on a system ready to share for reininstall
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)
        echo  PPA:$USER/$PPA
    list_packages_of "$tmpfile" "$USER/$PPA"
    done
done

rm "$tmpfile"

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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