Làm thế nào bạn có thể loại bỏ hoàn toàn một gói?


188

Tôi đang cố gắng để cài đặt sạch octave3.2gói.

Để làm điều này, tôi gỡ bỏ nó, sau đó cố gắng cài đặt lại.

Khi tôi cài đặt lại, một lỗi xảy ra. Nó có thể là một lỗi trong gói, nhưng tôi muốn chắc chắn rằng tôi đã xóa mọi thứ để tôi có thể thực hiện cài đặt sạch.

Có đủ để làm điều này?

sudo apt-get --purge remove octave3.2

Có thể cài đặt lại gói và chú ý đến danh sách gói HOẶC phụ thuộc ..?
dùng309924

Đề xuất để truy cập này
Pandya

Câu trả lời:


185

Đây là một câu trả lời rất chung cho câu hỏi về tác dụng của các gói thanh trừng. Để được tư vấn cụ thể cho tình huống của bạn, bạn sẽ phải chỉnh sửa câu hỏi của mình để bao gồm thông tin bổ sung - cụ thể là văn bản đầy đủ và chính xác của thông báo lỗi bạn đang nhận được.

Xóa các gói có hoặc sẽ xóa chúng và tất cả các tệp cấu hình toàn cầu (nghĩa là toàn hệ thống) của chúng. Đây thường là những gì mọi người có nghĩa là khi họ nói về việc loại bỏ hoàn toàn một gói.sudo apt purge ...sudo apt --purge remove ...

Nhưng điều đó không có nghĩa là hệ thống của bạn giống như trước khi gói được cài đặt. Đặc biệt:

  • Điều này không loại bỏ các gói đã được cài đặt như phụ thuộc, khi bạn cài đặt gói bạn hiện đang gỡ bỏ. Giả sử các gói đó không phụ thuộc vào bất kỳ gói nào khác và bạn chưa đánh dấu chúng là cài đặt thủ công, bạn có thể xóa các phụ thuộc bằng sudo apt autoremovehoặc (nếu bạn cũng muốn xóa các tệp cấu hình toàn hệ thống của chúng) sudo apt --purge autoremove.

  • Điều này không loại bỏ các tập tin cấu hình không toàn hệ thống. Cụ thể, nó không xóa cấu hình dành riêng cho người dùng:

    • Nó không xóa các tệp cấu hình và thư mục nằm trong .configthư mục chính của người dùng (hoặc trong thư mục con của thư mục chính của họ), được tạo bởi phần mềm mà gói cung cấp.

      • Nếu các tệp / thư mục này không được lưu trữ .config, chúng thường bắt đầu bằng .chính chúng. Dù bằng cách nào, bạn có thể nhìn thấy chúng lsbằng cách sử dụng -ahoặc -Agắn cờ và bạn có thể thấy chúng trong Nautilus và hầu hết các trình duyệt / trình quản lý tệp khác bằng cách nhấn Ctrl+ Hhoặc vào Xem > Hiển thị tệp ẩn .
    • Nó không đảo ngược các thay đổi được thực hiện đối với các tệp cấu hình dành riêng cho người dùng hiện có.

    • Nó không xóa mới gconfhoặc dconfkhóa, hoặc đảo ngược bất kỳ gconfhoặc dconfthay đổi cấu hình.

  • Sử dụng purgehoặc --purge removethay vì removekhông đảo ngược các thay đổi đối với các tệp cấu hình toàn hệ thống hiện có được cung cấp bởi các gói khác hoặc được tạo bởi người dùng. Tuy nhiên, đôi khi những thay đổi như vậy được hoàn tác bằng cách gỡ cài đặt gói (có hay không purgethay vì a remove).


61

Sử dụng lệnh:

sudo apt-get purge --auto-remove packagename

Nó sẽ lọc các gói cần thiết cùng với các phụ thuộc được cài đặt với các gói đó. Các --auto-removetùy chọn hoạt động tương tự như sudo apt-get autoremove.


1
điều này đã giải quyết vấn đề của tôi, đặc biệt là với certbot
T.Todua

7

Trước tiên, bạn hãy kiểm tra tên của gói bạn muốn xóa:

dpkg --list

Sau đó loại bỏ gói đã cho

sudo apt-get remove package_name

Lọc bất kỳ mã liên quan

sudo apt-get purge package_name

Sau đó, Autoremove

sudo apt-get autoremove

Cuối cùng, làm sạch để bạn kiểm tra mọi thứ được loại bỏ chính xác

sudo apt-get clean

Bạn muốn kiểm tra tại danh sách các gói xem cái bạn muốn xóa không được liệt kê nữa, nhưng nó là tùy chọn.

Chúc một ngày tốt lành,


4

Theo dõi tốt hơn các gói phụ thuộc bổ sung được cài đặt trong khi bạn đang cài đặt một gói.

The following extra packages will be installed: 
    libgssglue1 libnfsidmap2 libtirpc1 nfs-common rpcbind

Nếu bạn chỉ loại bỏ gói ban đầu, gói phụ thuộc có thể vẫn còn.

Vì vậy, bạn phải loại bỏ thủ công từng cái bằng cách sử dụng

apt-get purge package_name

1
Làm cách nào tôi có thể nhận được danh sách các gói này nếu bảng điều khiển của tôi không cuộn đủ xa
Luke Taylor

@LukeTaylor apt-get install package_name > output Sau đó less output để xem tất cả đầu ra với cuộn.
Harikrish Nam

2

Thay vì xóa các gói phụ thuộc được cài đặt tự động theo cách thủ công, hãy sử dụng các cách sau:

 zanfilip @ zanfilip-VPCEB3L0E: ~ / jp / nhật thực $ sudo apt-get --purge autoremove
    Đọc danh sách gói ... Xong
    Xây dựng cây phụ thuộc       
    Đọc thông tin trạng thái ... Xong
    Các gói sau sẽ được KHAI THÁC
      libupstart1 * linux-headers-3.16.0-30 * linux-headers-3.16.0-30-generic *
      linux-image-3.16.0-30-generic * linux-image-Extra-3.16.0-30-generic *
    0 để nâng cấp, 0 để cài đặt mới, 5 để gỡ bỏ và 23 không nâng cấp.
    Sau thao tác này, dung lượng đĩa 279 MB sẽ được giải phóng.
    Bạn có muốn tiếp tục? [Y / n]


2

Nếu bạn muốn loại bỏ một số gói bảo mật, bạn có thể sử dụng các lệnh sau:

dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}'| xargs apt-get -y --purge autoremove

đừng quên công tắc "-y" vì nếu không apt-get sẽ tiếp tục hỏi về việc xóa các gói riêng lẻ và sẽ không xóa bất cứ thứ gì.


2
Điều này có thể hữu ích nhưng cũng có thể phá hủy: Nó có thể dễ dàng khớp với gói bạn không thực sự muốn xóa và xóa cấu hình của nó mà không cần xác nhận! May mắn thay vì tên gói không bao giờ chứa một khoảng trắng, chúng ta có thể xoay nó và thả -y: apt-get --purge autoremove $(dpkg --get-selections | grep PACKAGE_NAME | awk '{ print $1}'). Điều đó sẽ phần nào an toàn hơn.
joeytwiddle

Có thể sẽ an toàn hơn khi chạy lệnh như: dpkg --get-select | grep PACKAGE_NAME | awk '{print $ 1}' Đầu tiên và sau đó chạy nó với xargs là cách thực hành tốt hơn để người dùng sẽ thấy những gì sẽ bị xóa do kết quả của lệnh.
Kerem Ersoy

0

Một tùy chọn khác bạn có, là sử dụng debfostergói. Điều này sẽ tương tác tìm và đề xuất các gói để loại bỏ (và thanh lọc) cùng với các gói phụ thuộc.

sudo apt install debfoster
sudo debfoster
# and optionally remove debfoster too
sudo purge debfoster
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.