Câu hỏi tại sao `dpkg -l | grep package` đang hiển thị một gói sau khi bị xóa


Để gỡ cài đặt một gói (Ví dụ: tor) được cài đặt từ kho lưu trữ nên sử dụng

sudo apt-get remove tor

Tôi đã làm điều này nhưng dpkg -l | grep tor thể hiện điều gì đó chống lại gói. Tiếp theo tôi thử

sudo apt-get purge tor

Nhưng khi tôi kiểm tra dpkg -l | grep tor Tôi đã nhận,

reza@reza-N43JM:/$ dpkg -l tor    
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
un  tor            <none>         (no description available)

Tôi nghĩ rằng khi tôi gỡ cài đặt bất kỳ gói nào, tôi sẽ không nhận được bất kỳ thứ gì trong dpkg -l danh sách. Có đúng không? Hoặc là apt-get remove hoặc là purge một công việc khác nhưng không gỡ cài đặt?


4
2018-03-28 14:53


gốc




Các câu trả lời:


Lưu ý đầu tiên hai chữ cái của đầu ra của dpkg -l tor mà nói un

u: Unknown (an unknown state)
n: Not- The package is not currently installed

đôi khi dpkg giữ các mục như vậy để tham khảo. Để xóa các mục có vấn đề, chạy trong terminal,

sudo dpkg --clear-avail

Từ man dpkg

--clear-avail
          Erase  the  existing  information  about   what   packages   are
          available.

4
2018-03-28 15:36



Sử dụng sudo dpkg --clear-avail không làm việc cho tôi. - wsw
Không cho tôi. (Ubuntu 16.04 LTS) - HeinrichStack


Có vẻ như @souravc chỉ là một phần của giải pháp.

(Lưu ý: Tôi đang làm điều này trên Debian, tôi đoán nó chủ yếu nên áp dụng cho Ububtu.)

/ var / lib / dpkg / status và / var / lib / dpkg / có sẵn thông tin về các gói có sẵn để cài đặt (loại apt), cài đặt hoặc chỉ có các tập tin cấu hình còn sót lại. Nếu một trong những gói này (nói, bar) Depends: trên gói foo, nhưng foo chính nó đã không được liệt kê (điều này sẽ không xảy ra miễn là bạn chỉ sử dụng các bản repo Debian / Ubuntu ổn định chính thức) dpkg -l tor sẽ đề cập đến chúng.

grep-status (không có yêu cầu root) là một lệnh gọn gàng có thể giúp bạn xác định vị trí gói nào là thủ phạm:

$ grep-status foo
Package: bar
Depends: foo
...
$ dpkg -s bar
$ dpkg -L bar
...

bây giờ bạn có thể gỡ cài đặt hoặc xóa gói bằng cách sử dụng ví dụ:

# dpkg -r bar
# dpkg -P bar

0
2017-08-19 02:23