Periksa dan hapus PPA yang tidak digunakan

18

Sejak instalasi, saya telah menambahkan tidak sedikit PPA ke sistem 15.04 saya karena saya ingin aplikasi tertentu. Tetapi kadang-kadang saya telah menghapus paket itu lagi, karena tidak berfungsi, bukan yang saya inginkan, atau hanya karena saya tidak membutuhkannya lagi. Saya tidak tahu apakah itu membuat perbedaan, tetapi beberapa repositori diinstal dengan add-apt-repositorysementara yang lain hanya datang dengan perintah yang baru saja membuat file /etc/apt/sources.list.d/secara manual.

Sekarang bagaimana saya bisa memeriksa apakah saya memiliki paket dari PPA yang diinstal dan jika tidak, hapus dari sumber perangkat lunak saya? Prosedur ini harus secara otomatis bekerja melalui semua AKP.

Komandan Byte
sumber
Sebagai skrip mandiri atau sebagai ekstensi untuk y-ppa-manager? ; )
AB
@ AB Standalone, tolong. Saya tidak menggunakan y-ppa-manager.
Byte Commander

Jawaban:

25

Ini skripnya. Tanpa parameter, skrip mencantumkan beberapa info. Dengan --delete, listfile akan dihapus, jika tidak ada paket yang diinstal.

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

Salin kode di atas dalam file baru, misalnya:

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

Jadikan skrip dapat dieksekusi

chmod +x ~/bin/checkPPAs

Dan jalankan dengan

~/bin/checkPPAs

untuk membuat daftar semua repositori dan jumlah paket yang diinstal.

Mulai skrip dengan

~/bin/checkPPAs --delete

untuk menghapus listfile.


Contoh output di sistem saya

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
sumber
Menurut Anda mengapa menghapusnya adalah ide yang buruk? Dan bagaimana sebaiknya Anda menghapusnya? add-apt-repository --remove? Atau secara manual rmyang ???.listberkas? Bagaimana dengan kunci GPG yang digunakan oleh PPA ini, apakah mereka juga akan dihapus jika saya gunakan add-apt-repository --remove?
Byte Commander
Jika tidak ada paket yang diinstal, maka file tersebut dapat dihapus dengan aman. Saya akan menambahkan. Hapus kuncinya sedikit lebih rumit.
AB
Saya telah memperbarui skrip saya.
AB
Mulai lagi, satu rmperintah memilikiecho
AB
5

Saya tidak tahu cara otomatis, tetapi metode ini cukup cepat:

  1. Mulai pengelola paket sinaptik dan masukkan kata sandi Anda saat diminta

  2. Di kolom kiri ke arah bawah, klik Asal

Semua ppas di sistem Anda sekarang akan terdaftar di bagian atas kolom kiri. Anda dapat mengklik daftar dan melihat apakah ada perangkat lunak yang diinstal dari masing-masing. (jika ada, akan ada kotak hijau dengan nama paket di kolom kanan). Jika ada banyak paket dari ppa (terlalu banyak untuk dilihat di layar sekaligus), Anda dapat mengklik S di bagian atas kolom kanan untuk mengurutkannya berdasarkan status.

CATATAN: Jika Anda memiliki ppas yang tidak digunakan:

  1. Klik Pengaturan di menu atas
  2. Kemudian Repositori
  3. Jendela Perangkat Lunak dan Pembaruan akan ditampilkan.
  4. Dari jendela ini, Anda dapat menghapus ppa yang tidak digunakan dari tab Perangkat Lunak Lain .
Marmer organik
sumber
Dia bertanya bagaimana mendeteksi PPA yang tidak digunakan. Sudah ada jutaan petunjuk tentang cara menghapus AKP melalui Pembaruan Perangkat Lunak.
Joe C
@ JoC Saya tidak yakin apa yang Anda keluhkan atau mengapa Anda menurunkan jawaban saya. Ini mungkin bukan cara terbaik, tapi saya menunjukkan bagaimana mendeteksi PPA yang tidak digunakan.
Marmer Organik