Suchen Sie nach nicht verwendeten PPAs und entfernen Sie diese

18

Seit der Installation habe ich meinem 15.04-System nicht zu wenige PPAs hinzugefügt, weil ich eine bestimmte Anwendung haben wollte. Aber manchmal habe ich dieses Paket später wieder entfernt, weil es nicht funktioniert hat, nicht das war, was ich wirklich wollte oder nur, weil ich es nicht mehr brauche. Ich weiß nicht, ob das einen Unterschied macht, aber einige Repositorys wurden mit installiert, add-apt-repositorywährend andere nur durch einen Befehl kamen, der die Datei /etc/apt/sources.list.d/manuell erstellt hat.

Wie kann ich nun überprüfen, ob ich Pakete von einem PPA installiert habe, und wenn nicht, diese von meinen Softwarequellen entfernen? Dieses Verfahren sollte automatisch alle PPAs durchlaufen.

Byte Commander
quelle
Als eigenständiges Skript oder als Erweiterung für y-ppa-manager? ; )
AB
@AB Standalone, bitte. Benutze ich nicht y-ppa-manager.
Byte Commander

Antworten:

24

Hier ist ein Skript. Ohne Parameter listet das Skript einige Infos auf. Mit --deletewerden die listDateien entfernt, wenn keine Pakete installiert sind.

#!/usr/bin/env bash
for f in /etc/apt/sources.list.d/*.list; do
    grep -Po "(?<=^deb\s).*?(?=#|$)" "$f" | while read -r ENTRY ; do
    echo "ENTRY: $ENTRY"
        HOST=$(cut -d/ -f3 <<< "$ENTRY")

        if [ "ppa.launchpad.net" = "$HOST" ]; then
          USER=$(cut -d/ -f4 <<< "$ENTRY")
          PPA=$(cut -d/ -f5 <<< "$ENTRY")
          packageCount=$(awk '$1=="Package:" {if (a[$2]++ == 0) {system("dpkg -l "$2)}}' /var/lib/apt/lists/*"$USER"*"$PPA"*Packages 2>/dev/null | awk '/^ii/' | wc -l)
          echo "PPA: ppa:$USER/$PPA"
          echo "FILENAME: $f"
          echo "$packageCount package(s) installed"
          if [ "$packageCount" -eq 0 ] && [ "$1" == "--delete" ]; then
            sudo rm "$f" && echo "$f deleted"
          fi
          echo
        else 
          USER=$(cut -d/ -f3 <<< "$ENTRY")
          PPA=$(cut -d/ -f4 <<< "$ENTRY")
          packageCount=$(awk '$1=="Package:" {if (a[$2]++ == 0) {system("dpkg -l "$2)}}' /var/lib/apt/lists/*"$USER"*Packages 2>/dev/null | awk '/^ii/' | wc -l)
          echo "REPOSITORY: $USER/$PPA"
          echo "FILENAME: $f"
          echo "$packageCount package(s) installed"
          if [ "$packageCount" -eq 0 ] && [ "$1" == "--delete" ]; then
            sudo rm "$f" && echo "$f deleted" 
          fi
          echo
        fi
    done
done

Kopieren Sie den obigen Code in eine neue Datei, zB:

mkdir -p ~/bin
nano ~/bin/checkPPAs

Machen Sie das Skript ausführbar

chmod +x ~/bin/checkPPAs

Und mach es mit

~/bin/checkPPAs

um alle Repositorys und die Anzahl der installierten Pakete aufzulisten.

Starten Sie das Skript mit

~/bin/checkPPAs --delete

um die listDateien zu entfernen .


Beispielausgabe auf meinem System

ENTRY: http://ppa.launchpad.net/webupd8team/y-ppa-manager/ubuntu vivid main
PPA: ppa:webupd8team/y-ppa-manager
FILENAME: /etc/apt/sources.list.d/webupd8team-ubuntu-y-ppa-manager-vivid.list
3 package(s) installed

ENTRY: http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu vivid main
PPA: ppa:nilarimogard/webupd8
FILENAME: /etc/apt/sources.list.d/nilarimogard-ubuntu-webupd8-vivid.list
5 package(s) installed

ENTRY: http://ppa.launchpad.net/obsproject/obs-studio/ubuntu vivid main
PPA: ppa:obsproject/obs-studio
FILENAME: /etc/apt/sources.list.d/obsproject-ubuntu-obs-studio-vivid.list
1 package(s) installed

ENTRY: http://archive.getdeb.net/ubuntu vivid-getdeb apps
REPOSITORY: archive.getdeb.net/ubuntu vivid-getdeb apps
FILENAME: /etc/apt/sources.list.d/getdeb.list
7 package(s) installed

ENTRY: http://ppa.launchpad.net/psi-plus/ppa/ubuntu vivid main
PPA: ppa:psi-plus/ppa
FILENAME: /etc/apt/sources.list.d/psi-plus-ubuntu-ppa-vivid.list
15 package(s) installed

ENTRY: http://ppa.launchpad.net/libreoffice/ppa/ubuntu vivid main
PPA: ppa:libreoffice/ppa
FILENAME: /etc/apt/sources.list.d/libreoffice-ubuntu-ppa-vivid.list
24 package(s) installed

ENTRY: https://deb.nodesource.com/node_0.12 vivid main
REPOSITORY: deb.nodesource.com/node_0.12 vivid main
FILENAME: /etc/apt/sources.list.d/nodesource.list
1 package(s) installed

ENTRY: http://dl.google.com/linux/chrome/deb/ stable main
REPOSITORY: dl.google.com/linux
FILENAME: /etc/apt/sources.list.d/google-chrome.list
2 package(s) installed

ENTRY: http://ppa.launchpad.net/gnome3-team/gnome3/ubuntu vivid main
PPA: ppa:gnome3-team/gnome3
FILENAME: /etc/apt/sources.list.d/gnome3-team-ubuntu-gnome3-vivid.list
273 package(s) installed

ENTRY: http://ppa.launchpad.net/noobslab/apps/ubuntu vivid main
PPA: ppa:noobslab/apps
FILENAME: /etc/apt/sources.list.d/noobslab-ubuntu-apps-vivid.list
0 package(s) installed

ENTRY: http://ppa.launchpad.net/ubuntuhandbook1/corebird/ubuntu vivid main
PPA: ppa:ubuntuhandbook1/corebird
FILENAME: /etc/apt/sources.list.d/ubuntuhandbook1-ubuntu-corebird-vivid.list
1 package(s) installed

ENTRY: http://ppa.launchpad.net/webupd8team/unstable/ubuntu vivid main
PPA: ppa:webupd8team/unstable
FILENAME: /etc/apt/sources.list.d/webupd8team-ubuntu-unstable-vivid.list
1 package(s) installed

ENTRY: http://download.mono-project.com/repo/debian wheezy main
REPOSITORY: download.mono-project.com/repo
FILENAME: /etc/apt/sources.list.d/mono-xamarin.list
166 package(s) installed

ENTRY: http://ppa.launchpad.net/otto-kesselgulasch/gimp-edge/ubuntu vivid main
PPA: ppa:otto-kesselgulasch/gimp-edge
FILENAME: /etc/apt/sources.list.d/otto-kesselgulasch-ubuntu-gimp-edge-vivid.list
5 package(s) installed

ENTRY: http://ppa.launchpad.net/numix/ppa/ubuntu vivid main
PPA: ppa:numix/ppa
FILENAME: /etc/apt/sources.list.d/numix-ubuntu-ppa-vivid.list
3 package(s) installed

ENTRY: http://ppa.launchpad.net/webupd8team/atom/ubuntu vivid main
PPA: ppa:webupd8team/atom
FILENAME: /etc/apt/sources.list.d/webupd8team-ubuntu-atom-vivid.list
1 package(s) installed

ENTRY: https://packages.graylog2.org/repo/debian/ trusty 1.0
REPOSITORY: packages.graylog2.org/repo
FILENAME: /etc/apt/sources.list.d/graylog.list
3 package(s) installed

ENTRY: http://ppa.launchpad.net/ubuntu-mate-dev/ppa/ubuntu vivid main
PPA: ppa:ubuntu-mate-dev/ppa
FILENAME: /etc/apt/sources.list.d/ubuntu-mate-dev-ubuntu-ppa-vivid.list
0 package(s) installed

ENTRY: http://ppa.launchpad.net/gnome3-team/gnome3-staging/ubuntu vivid main
PPA: ppa:gnome3-team/gnome3-staging
FILENAME: /etc/apt/sources.list.d/gnome3-team-ubuntu-gnome3-staging-vivid.list
268 package(s) installed

ENTRY: http://debian.koha-community.org/koha stable main
REPOSITORY: debian.koha-community.org/koha stable main
FILENAME: /etc/apt/sources.list.d/koha.list
0 package(s) installed

ENTRY: http://ppa.launchpad.net/pgavin/ghdl/ubuntu trusty main
PPA: ppa:pgavin/ghdl
FILENAME: /etc/apt/sources.list.d/pgavin-ubuntu-ghdl-vivid.list
0 package(s) installed

ENTRY: http://ppa.launchpad.net/ubuntu-mate-dev/vivid-mate/ubuntu vivid main
PPA: ppa:ubuntu-mate-dev/vivid-mate
FILENAME: /etc/apt/sources.list.d/ubuntu-mate-dev-ubuntu-vivid-mate-vivid.list
3 package(s) installed

ENTRY: http://ppa.launchpad.net/webupd8team/sublime-text-3/ubuntu vivid main
PPA: ppa:webupd8team/sublime-text-3
FILENAME: /etc/apt/sources.list.d/webupd8team-ubuntu-sublime-text-3-vivid.list
1 package(s) installed

ENTRY: http://ppa.launchpad.net/webupd8team/java/ubuntu vivid main
PPA: ppa:webupd8team/java
FILENAME: /etc/apt/sources.list.d/webupd8team-ubuntu-java-vivid.list
1 package(s) installed

ENTRY: http://dl.google.com/linux/chrome/deb/ stable main
REPOSITORY: dl.google.com/linux
FILENAME: /etc/apt/sources.list.d/google.list
2 package(s) installed

ENTRY: http://dl.google.com/linux/chrome/deb/ stable main
REPOSITORY: dl.google.com/linux
FILENAME: /etc/apt/sources.list.d/google-chrome-beta.list
2 package(s) installed
AB
quelle
Warum halten Sie das Entfernen für eine schlechte Idee? Und wie würden Sie es am besten entfernen? add-apt-repository --remove? Oder manuell rmdie ???.listDatei? Was ist mit den von dieser PPA verwendeten GPG-Schlüsseln add-apt-repository --remove? Werden sie auch entfernt, wenn ich sie verwende ?
Byte Kommandant
Wenn kein Paket installiert ist, kann die Datei sicher gelöscht werden. Ich werde hinzufügen. Entfernen des Schlüssels ist etwas komplizierter.
AB
Ich habe mein Skript aktualisiert.
AB
Starten Sie es erneut, ein rmBefehl hatte eineecho
AB
5

Ich kenne keinen automatischen Weg, aber diese Methode ist ziemlich schnell:

  1. Starten Sie den synaptic package manager und geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden

  2. Klicken Sie in der linken Spalte unten auf Origin

Alle ppas auf Ihrem System werden jetzt oben in der linken Spalte aufgelistet. Sie können in die Liste klicken und prüfen, ob von jedem Programm eine Software installiert ist. (Wenn dies der Fall ist, wird in der rechten Spalte ein grünes Kästchen neben dem Paketnamen angezeigt.) Wenn es viele ppa-Pakete gibt (zu viele, um sie gleichzeitig auf dem Bildschirm anzuzeigen), können Sie auf das S oben in der rechten Spalte klicken , um sie nach Status zu sortieren.

HINWEIS: Wenn Sie nicht verwendete ppas haben:

  1. Klicken Sie im oberen Menü auf Einstellungen
  2. Dann Repositories
  3. Das Fenster Software und Updates wird angezeigt.
  4. In diesem Fenster können Sie die nicht verwendeten ppas von der Registerkarte Andere Software entfernen .
Bio-Marmor
quelle
Er fragte, wie man unbenutzte PPAs aufspürt. Es gibt bereits unzählige Anweisungen zum Löschen eines PPA über ein Software-Update.
Joe C
@ JoeC Ich bin nicht sicher, worüber Sie sich beschweren oder warum Sie meine Antwort abgelehnt haben. Es ist vielleicht nicht der beste Weg, aber ich zeige, wie man nicht verwendete PPAs erkennt.
Bio-Marmor