Sprawdź i usuń nieużywane umowy PPA

18

Od czasu instalacji nie dodałem za mało PPA do mojego systemu 15.04, ponieważ chciałem konkretnej aplikacji. Ale czasami usunąłem ten pakiet później, ponieważ nie działał, nie był tym, czego naprawdę chciałem, lub po prostu dlatego, że go już nie potrzebuję. Nie wiem, czy to robi różnicę, ale niektóre repozytoria zostały zainstalowane, add-apt-repositorya inne po prostu przyszły za pomocą polecenia, które właśnie utworzyło plik /etc/apt/sources.list.d/ręcznie.

Jak mogę teraz sprawdzić, czy mam zainstalowane jakieś pakiety z PPA, a jeśli nie, usunąć je ze źródeł oprogramowania? Ta procedura powinna automatycznie działać przez wszystkie umowy PPA.

Bajt Dowódca
źródło
Jako samodzielny skrypt lub rozszerzenie dla y-ppa-manager? ; )
AB
@AB Standalone, proszę. Nie używam y-ppa-manager.
Bajt Dowódca

Odpowiedzi:

25

Oto skrypt. Bez parametru skrypt wyświetla niektóre informacje. Dzięki --delete, że listpliki zostaną usunięte, jeśli nie ma zainstalowane pakiety.

#!/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

Skopiuj powyższy kod do nowego pliku, np .:

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

Spraw, by skrypt był wykonywalny

chmod +x ~/bin/checkPPAs

I uruchom to

~/bin/checkPPAs

aby wyświetlić listę wszystkich repozytoriów i liczbę zainstalowanych pakietów.

Rozpocznij skrypt za pomocą

~/bin/checkPPAs --delete

aby usunąć listpliki.


Przykładowe dane wyjściowe w moim systemie

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
źródło
Jak myślisz, dlaczego ich usunięcie to zły pomysł? A jak najlepiej to usunąć? add-apt-repository --remove? Lub ręcznie plik? Co z kluczami GPG używanymi w tym PPA, czy zostaną one również usunięte, jeśli ich użyję ? rm???.listadd-apt-repository --remove
Bajt Dowódca
Jeśli żaden pakiet nie jest zainstalowany, plik można bezpiecznie usunąć. Będę dodawać. Usunięcie klucza jest nieco bardziej skomplikowane.
AB
Zaktualizowałem swój skrypt.
AB
Uruchom ponownie, jedno rmpolecenie miałoecho
AB
5

Nie znam sposobu automatycznego, ale ta metoda jest dość szybka:

  1. Uruchom menedżera pakietów synaptic i po wyświetleniu monitu wprowadź hasło

  2. W lewej kolumnie u dołu kliknij Początek

Wszystkie ppas w twoim systemie będą teraz wyświetlane w górnej części lewej kolumny. Możesz kliknąć listę i sprawdzić, czy każde z nich jest zainstalowane. (jeśli istnieje, obok nazwy pakietu w prawej kolumnie będzie zielone pole). Jeśli istnieje wiele pakietów z ppa (zbyt wiele, aby zobaczyć na ekranie na raz), możesz kliknąć S w górnej części prawej kolumny, aby posortować je według statusu.

UWAGA: Jeśli masz jakieś nieużywane ppas:

  1. Kliknij Ustawienia w górnym menu
  2. Następnie repozytoria
  3. Wyświetlone zostanie okno Oprogramowanie i aktualizacje .
  4. W tym oknie możesz usunąć nieużywane ppas z zakładki Inne oprogramowanie .
Marmur Organiczny
źródło
Zapytał, jak wykryć nieużywane PPA. Istnieje już ponad milion wskazówek dotyczących usuwania PPA za pomocą Aktualizacji oprogramowania.
Joe C
@JoeC Nie jestem pewien, na co narzekasz i dlaczego zlekceważyłeś moją odpowiedź. To może nie być najlepszy sposób, ale pokazuję, jak wykryć nieużywane PPA.
Marmur Organiczny