![Cách xóa PPA trên các bản phân phối dựa trên Ubuntu](/article/uploadfiles/202204/2022040818385577.jpg)
Kho lưu trữ gói cá nhân (PPA) có thể rất tuyệt vời. Bạn nhận được phần mềm hoặc chương trình mới hơn bị thiếu trong kho lưu trữ mặc định của phân phối của bạn. Nhưng đôi khi, bạn sẽ muốn xóa PPA vì nhiều lý do khác nhau. Làm thế nào bạn làm điều này phụ thuộc vào những gì bạn muốn đạt được. Thông thường, bạn sẽ thấy mình ở một trong hai trường hợp sau:
- Bạn muốn xóa PPA khỏi danh sách nguồn phần mềm của mình và xóa các gói đã cài đặt.
- Bạn muốn xóa PPA khỏi danh sách nguồn phần mềm của mình và hoàn nguyên về các gói mặc định do bản phân phối của bạn cung cấp.
Hãy khám phá tình huống đầu tiên.
Xóa PPA và các Gói của nó
Đảm bảo rằng bạn đã cài đặt tiện ích “add-apt-repository”. Theo mặc định, nó sẽ có sẵn trên hầu hết các bản phân phối dựa trên Ubuntu, nhưng chỉ để đảm bảo, hãy chạy lệnh sau.
sudo apt install software-properties-common
Tiếp theo, bạn cần tên chính xác của PPA mà bạn muốn xóa. Nếu bạn quên nó, bạn có thể Google nó, mở trang Launchpad nơi nó được lưu trữ và tìm hướng dẫn cài đặt. Ở đó, bạn sẽ tìm thấy tên chính xác của nó (ví dụ:“ppa:libreoffice / ppa”).
Ngoài ra, thay vì tìm kiếm trên Web, bạn có thể tìm kiếm danh sách nguồn phần mềm của mình để xem những PPA nào bạn hiện đang hoạt động.
grep -r -i ppa /etc/apt/
Tiếp theo, bạn có thể mở bất kỳ liên kết nào bắt đầu bằng “https://ppa.launchpad.net” và tìm tên PPA chính xác mà bạn cần.
Thay thế “NAME_OF_PPA” trong lệnh tiếp theo bằng tên thực mà bạn đã tìm thấy trước đó. Ví dụ:lệnh cuối cùng có thể giống như sau:sudo add-apt-repository --remove ppa:libreoffice/ppa
.
sudo add-apt-repository --remove NAME_OF_PPA
Làm mới thông tin của người quản lý gói.
sudo apt update
Cuối cùng, xóa gói và các phần phụ thuộc của nó với
sudo apt autoremove NAME_OF_PACKAGE
Sau khi bạn nhập lệnh này, hãy chú ý đến danh sách các gói sẽ bị loại bỏ. Nếu bạn thấy thứ gì đó bạn cần trong danh sách đó, hãy sử dụng remove
tùy chọn apt (thay vì autoremove
):
sudo apt remove NAME_OF_PACKAGE
Tìm tất cả các gói được cài đặt từ PPA
Nếu tùy chọn tự động khôi phục dường như không gỡ cài đặt tất cả các gói đến từ PPA đó, bạn có thể phải xóa chúng theo cách thủ công.
Cài đặt tiện ích sau.
sudo apt install apt-forktracer
Giờ đây, bạn có thể tìm thấy tất cả các gói được cài đặt trên hệ thống của mình từ PPA.
apt-forktracer | grep -i ppa | awk '{print $1}'
Tiếp theo, bạn có thể xóa chúng bằng sudo apt remove
hoặc sudo apt autoremove
. autoremove
sẽ cố gắng tự động gỡ cài đặt (các) gói bạn chỉ định, cộng với tất cả các phần phụ thuộc. remove
sẽ chỉ gỡ cài đặt (các) gói bạn chỉ định.
Nếu bạn chắc chắn rằng mình có thể xóa tất cả các gói được hiển thị trước đó bởi apt-forktracer, bạn có thể sử dụng lệnh như
sudo apt remove $(apt-forktracer | grep -i ppa | awk '{print $1}')
Hãy nhớ kiểm tra kỹ những gì sẽ bị xóa để bạn không vô tình gỡ cài đặt thứ mình cần.
Xóa PPA và Hoàn nguyên các Gói về Phiên bản của Phân phối
Giống như trong phần trước, trước tiên bạn cần biết tên chính xác của PPA. Nếu bạn không biết, hãy thử các phương pháp trên.
Cài đặt ppa-purge.
sudo apt install ppa-purge
Chạy tập lệnh ppa-purge, tập lệnh này sẽ xóa các PPA khỏi kho phần mềm của bạn và thay thế các gói PPA đã cài đặt bằng các gói của bản phân phối của bạn. Tất nhiên, điều này yêu cầu bản phân phối Linux của bạn có sẵn các gói này. Trong hầu hết các trường hợp, điều này có nghĩa là phần mềm mới hơn sẽ bị hạ cấp xuống các phiên bản cũ hơn.
sudo ppa-purge NAME_OF_PPA
Lệnh ví dụ:sudo ppa-purge ppa:libreoffice/ppa
.
Kết luận
Trên các hệ thống "sạch", các lệnh trên sẽ chạy mà không gặp trở ngại. Tuy nhiên, trên các hệ thống khác, bạn có thể gặp phải một số xung đột do các gói không tương thích với nhau tạo ra. Rất tiếc, không có giải pháp chung nào vì nó phụ thuộc vào tình huống chính xác của bạn. Hầu hết thời gian nó có thể được giải quyết bằng cách gỡ bỏ / hạ cấp / nâng cấp một số gói đó. Để tránh gặp phải trường hợp như vậy trong tương lai, bạn có thể đọc Don’t Break Debian để biết cách giữ hệ điều hành của mình ở trạng thái “sạch”.