21

How can I list all the ppa repositories added to my system and save it to a .txt file, so that I don't want to spend my time in searching for ppa's for fresh installations and i can just select a ppa line in my .txt file and append to the command sudo add-apt-repository? Also is there any other ways to do this in which i dont want to give the gpg keys manually?

18

From How can I get a list of all repositories and PPAs from the command line into an install script?

Part of the answer looks to have what you are looking for:

#! /bin/sh 
# 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 sudo apt-add-repository ppa:$USER/$PPA
    done
done

Save this as listppa.sh

listppa.sh > installppa.sh

This creates a script that you can backup somewhere, then run to add your PPAs on a fresh install by simply running:

installppa.sh
20

For those who just want to check the PPAs they have installed without actually doing anything with them automatically you can do:

$ apt-cache policy

In my system, here's a bit of what it shows:

% apt-cache policy
Package files:
 100 /var/lib/dpkg/status
     release a=now
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main Translation-en
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-ubuntu-toolchain-r-test,a=precise,n=precise,l=Toolchain test builds,c=main
     origin ppa.launchpad.net
 500 http: ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu/ precise/main amd64 Packages
     release v=12.04,o=LP-PPA-ubuntu-toolchain-r-test,a=precise,n=precise,l=Toolchain test builds,c=main
     origin ppa.launchpad.net
 500 http: ppa.launchpad.net/rael-gc/scudcloud/ubuntu/ precise/main Translation-en
 500 http: ppa.launchpad.net/rael-gc/scudcloud/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-rael-gc-scudcloud,a=precise,n=precise,l=ScudCloud - Linux client for Slack,c=main
     origin ppa.launchpad.net
...

Quoted from here:

[apt-cache policy] retrieves priorities associated with each repository resource. From its output, you can infer a list of all available repositories and PPAs.

Source: http://ask.xmodulo.com/list-installed-repositories-ppas-ubuntu.html

  • 5
    This is nice and simple, however the output also includes Ubuntu base repositories. If you're going to do that you may as well use the full, final command used in the link you gave as your source: apt-cache policy | grep http | awk '{print $2 $3}' | sort -u. The output is better organized and easier on the eyes. – pjd Feb 9 '16 at 16:12
  • Note: apt-cache policy will only show the repos after you have run apt-get update. If you just added a repo with add-apt-repository, it will not show up with apt-cache policy until you run apt-get update. – wisbucky Apr 10 at 21:16
0

From my answer on How can I get a list of all repositories and PPAs from the command line into an install script?

List PPAs in ppa:USER/REPO format:

grep -E '^deb\s' /etc/apt/sources.list /etc/apt/sources.list.d/*.list |\
  cut -f2- -d: |\
  cut -f2 -d' ' |\
  sed -re 's#http://ppa\.launchpad\.net/([^/]+)/([^/]+)(.*?)$#ppa:\1/\2#g' |\
  grep '^ppa:'

List all repositories including PPAs in ppa:USER/REPO format:

Just remove the last grep (don't forget to remove the |\ from the previous line after thesed command).

See my answer on the other question for full scripts you can save and use, including generating an install script.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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