Kurztipp: Alle PPAs in Ubuntu mit einem Konsolenbefehl auflisten

PPAs sind immer ein zweischneidiges Schwert. Einerseits ermöglichen sie es sehr einfach neue und aktuelle Software in Ubuntu zu nutzen, andererseits kann es immer wieder zu Problemen kommen. Daher sollte man sich immer einmal nach einer gewissen Zeit seine zusätzlich hinzugefügten Paketquellen anschauen. Dies ist natürlich standardmäßig über Systemeinstellungen und Software-Paketquellen einsehbar. Übersichtlicher und vor allem schneller bekomme ich dies jedoch mit einem einfachen, einzeiligen Konsolenbefehl:

grep -RoPish "ppa.launchpad.net/[^/]+/[^/ ]+" 
/etc/apt | sort -u | sed -r 's/\.[^/]+\//:/'

PPA in Konsole


Mittels dem Paket ppa-purge könnte man diese nun auch direkt aufräumen. Ich habe mir den Befehl mal in die Aliase gepackt. [via]

Update:

In dem Kommentaren kamen zwei gute Hinweise, dass zum einen natürlich nur Quellen aus Launchpad verglichen werden, zum anderen /etc/apt nicht perfekt ist. Dahier hier noch die vorgeschlagene Lösung:

find /etc/apt -name “*\.list” -exec grep -v “\s*#” ‘{}’ \; | grep -v “deb-src” | grep -Piso “ppa.launchpad.net/[^/]+/[^/ ]+” | sed -r ‘s~^ppa.launchpad.net/~ppa:~


  • http://axebase.net/blog axt

    Nicht-Launchpad-Fremdquellen bekommst Du so freilich nicht angezeigt.

    • http://pmeyhoefer.de storminator

      Das stimmt, danke für den Hinweis. In meinem Fall sind es allerdings nur Launchpad-Fremdquellen.

  • http://danjou.de dAnjou

    Dieser Befehl ist nicht ganz vollständig wie ich feststellen musste. Zum einen achtet der Befehl nicht darauf, ob ein PPA bereits deaktiviert ist (mit einer # zum Kommentar gemacht). Zum anderen liegen in /etc/apt nicht nur die eigentlichen Quellenlisten, sondern auch Backups und Sicherungsdateien. Ist nicht unbedingt sinnvoll, die auch abzugrasen.

    Hier meine Variante:

    find /etc/apt -name “*\.list” -exec grep -v “\s*#” ‘{}’ \; | grep -Piso “ppa.launchpad.net/[^/]+/[^/ ]+” | sed -r ‘s~^ppa.launchpad.net/~ppa:~’

    • http://pmeyhoefer.de storminator

      Danke, hab es einmal im Beitrag ergänzt!

      • http://danjou.de dAnjou

        Huch, hab die Quelltext-Quellen nicht raussortiert:

        find /etc/apt -name “*\.list” -exec grep -v “\s*#” ‘{}’ \; | grep -v “deb-src” | grep -Piso “ppa.launchpad.net/[^/]+/[^/ ]+” | sed -r ‘s~^ppa.launchpad.net/~ppa:~’

  • Michael

    Danke für den Tipp. Der erste Befehl funktioniert im Terminal, der zweite (von dAnjou) wurde aber von der Blogsoftware entstellt (Zeichen wie: ` ” ‘ ).
    Zudem: wie erstellt man einen Alias für solch komplexe Befehle? alias krz_befehl=’ganz langer Befehl’ geht ja nicht, weil die Ticks (‘) durcheinander geraten (??)

    • http://danjou.de dAnjou

      Soweit ich das sehe, sind die alle jeweils durch die anderen ersetzbar. Ersetz also einfach alle ‘ durch ” und pack wieder ‘ um den Alias.

  • Tom

    Schöne Idee und mal wieder ein schönes praktisches Beispiel für Scripting.
    Noch etwas performanter mit nur einem Kommandoaufruf geht es auch so:

    awk -F/ ‘$0~/^deb http:\/\/ppa/ {printf “ppa:%s/%s\n”, $4, $5;}’ /etc/apt/sources.list /etc/apt/sources.list.d/*.list

    Eine grafische Alternative inkl. direkter Suche nach vorhandenen PPAs bei Launchpad:
    https://launchpad.net/y-ppa-manager