Kiểm tra và loại bỏ các PPA không sử dụng


18

Kể từ khi cài đặt, tôi đã thêm không quá ít PPA vào hệ thống 15.04 của mình vì tôi muốn có một ứng dụng cụ thể. Nhưng đôi khi tôi đã gỡ bỏ gói đó một lần nữa, vì nó không hoạt động, không phải là điều tôi thực sự muốn, hoặc chỉ vì tôi không cần nó nữa. Tôi không biết điều đó có tạo ra sự khác biệt hay không, nhưng một số kho lưu trữ đã được cài đặt add-apt-repositorytrong khi một số khác chỉ xuất hiện bằng một lệnh vừa tạo tệp /etc/apt/sources.list.d/theo cách thủ công.

Bây giờ làm thế nào tôi có thể kiểm tra xem tôi đã cài đặt bất kỳ gói nào từ PPA chưa và nếu không, hãy xóa nó khỏi các nguồn phần mềm của tôi? Quy trình này sẽ tự động hoạt động thông qua tất cả các PPA.


Là tập lệnh độc lập hoặc là phần mở rộng cho trình quản lý y-ppa? ; )
AB

@AB Độc lập, làm ơn. Tôi không sử dụng y-ppa-manager.
Chỉ huy Byte

Câu trả lời:


25

Đây là một kịch bản. Không có tham số, tập lệnh liệt kê một số thông tin. Với --delete, các listtệp sẽ bị xóa, nếu không có gói nào được cài đặt.

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

Sao chép mã ở trên trong một tệp mới, ví dụ:

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

Làm cho tập lệnh thực thi

chmod +x ~/bin/checkPPAs

Và chạy nó với

~/bin/checkPPAs

để liệt kê tất cả các kho lưu trữ và số lượng các gói được cài đặt.

Bắt đầu kịch bản với

~/bin/checkPPAs --delete

để loại bỏ các listtập tin.


Đầu ra mẫu trên hệ thống của tôi

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

Tại sao bạn nghĩ loại bỏ chúng là một ý tưởng tồi? Và tốt nhất bạn nên loại bỏ nó như thế nào? add-apt-repository --remove? Hoặc thủ công rmcác ???.listtập tin? Còn các khóa GPG được sử dụng bởi PPA này, chúng cũng sẽ bị xóa nếu tôi sử dụng add-apt-repository --remove?
Chỉ huy Byte

Nếu không có gói nào được cài đặt, thì tệp có thể bị xóa một cách an toàn. Tôi sẽ thêm. Bỏ chìa khóa phức tạp hơn một chút.
AB

Tôi đã cập nhật kịch bản của tôi.
AB

Bắt đầu lại, một rmlệnh có mộtecho
AB

5

Tôi không biết một cách tự động, nhưng phương pháp này khá nhanh:

  1. Bắt đầu trình quản lý gói synap và nhập mật khẩu của bạn khi được nhắc

  2. Trong cột bên trái về phía dưới, nhấp vào Xuất xứ

Tất cả các pp trên hệ thống của bạn bây giờ sẽ được liệt kê ở trên cùng của cột bên trái. Bạn có thể nhấp vào danh sách và xem có phần mềm nào được cài đặt từ mỗi phần mềm không. (nếu có, sẽ có một hộp màu xanh lá cây theo tên gói ở cột bên phải). Nếu có nhiều gói từ ppa (quá nhiều thứ để xem trên màn hình cùng một lúc), bạn có thể nhấp vào S ở trên cùng của cột bên phải để sắp xếp chúng theo trạng thái.

LƯU Ý: Nếu bạn có bất kỳ ppas chưa sử dụng:

  1. Nhấp vào Cài đặt trong menu trên cùng
  2. Sau đó, kho
  3. Cửa sổ phần mềm và cập nhật sẽ được hiển thị.
  4. Từ cửa sổ này, bạn có thể xóa các ppas chưa sử dụng khỏi tab Phần mềm khác .

Ông hỏi làm thế nào để phát hiện PPA không sử dụng. Đã có hàng trăm hướng về cách xóa PPA thông qua Cập nhật phần mềm.
Joe C

@JoeC Tôi không chắc bạn đang phàn nàn về điều gì hoặc tại sao bạn lại hạ thấp câu trả lời của tôi. Nó có thể không phải là cách tốt nhất, nhưng tôi chỉ ra cách phát hiện PPA không sử dụng.
Đá hoa cương hữu cơ
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.