Trong khi thực hiện các nhiệm vụ bảo trì khác, tôi nhận thấy rằng dpkg -l
liệt kê khoảng 90 gói có trạng thái ri
thay vì mong đợi ii
.
Tôi chỉ duy trì các gói với đúng cách
và năng khiếu
và tôi đã không ép buộc bất kỳ gói nào nhưng tôi thường xuyên làm cài đặt apt --no-install-recommends ...
để tránh nhận được các gói không cần thiết. Tôi cũng cố gắng duy trì cẩn thận các cờ "được cài đặt tự động" và tôi có 2914 gói có trạng thái "được cài đặt tự động" (tìm kiếm năng khiếu '~i~M'
) và 422 gói có trạng thái "được cài đặt thủ công" (tìm kiếm năng khiếu '~i!~M'
).
Điều gì có thể là lý do để các gói có trạng thái Gỡ bỏ
+ thiết lập
(ri
) Trong dpkg -l
liệt kê khi tôi chưa yêu cầu gỡ bỏ các gói đó? Có vẻ như các gói có trạng thái này là các gói mà tôi thực sự muốn giữ lại trong hệ thống. Có thể ví dụ nâng cấp sudo apt dist
gây ra điều này mà không nhận thấy tôi?
(Tôi biết rằng tôi có thể cài đặt lại các gói đó bằng cài đặt apt --reinstall tên gói
để có được trạng thái trở lại ii
. Tôi cũng thường xóa các gói đã xóa và tìm kiếm năng khiếu '~c'
liệt kê không có gói nào.)
Chi tiết bổ sung từ một hệ thống khác có cùng vấn đề:
$ sudo apt dist-upgrade && sudo apt autoremove && dpkg -l | grep^ri | wc -l
Đọc danh sách gói... Xong
Xây dựng cây phụ thuộc
Đang đọc thông tin trạng thái... Xong
Đang tính nâng cấp... Xong
Các gói sau đây đã được giữ lại:
hộp ảo-6.0
0 đã nâng cấp, 0 mới cài đặt, 0 cần xóa và 1 chưa nâng cấp.
Đọc danh sách gói... Xong
Xây dựng cây phụ thuộc
Đang đọc thông tin trạng thái... Xong
0 đã nâng cấp, 0 mới cài đặt, 0 cần xóa và 3 chưa nâng cấp.
171
Cho nên nâng cấp dist
cũng không tự động xóa
không chạm vào gói 171 với ri
trạng thái.
Gói ví dụ với ri
trạng thái:
$ dpkg -l ca-chứng chỉ-java
Mong muốn=Không xác định/Cài đặt/Xóa/Thanh lọc/Giữ
| Trạng thái=Không/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Trạng thái,Err: chữ hoa=xấu)
||/ Tên Phiên bản Kiến trúc Mô tả
+++-================================= =-============================================================ ================================================================= ================================================================= =========
ri ca-chứng chỉ-java 20160321ubuntu1 tất cả các chứng chỉ CA phổ biến (kho khóa JKS)
và thông tin bổ sung cho cùng một gói:
$ chương trình năng khiếu ca-chứng chỉ-java
Gói: ca-chứng chỉ-java
Trạng thái: đã cài đặt
Tự động cài đặt: không
Đa vòm: nước ngoài
Phiên bản: ...
$ aptitude tại sao ca-chứng chỉ-java
tôi default-jre-headless Phụ thuộc vào openjdk-8-jre-headless
iBA openjdk-8-jre-headless Phụ thuộc vào ca-chứng chỉ-java
$ apt-mark showhold
hộp ảo-6.0
Thông tin bổ sung sau khi đọc về các nguyên nhân có thể xảy ra:
Như đã giải thích trong câu trả lời https://askubuntu.com/a/802612/50254 trạng thái của các gói này có thể được cố định để khớp với các gói hiện được cài đặt bằng cách chạy (lưu ý rằng nguồn cấp dữ liệu sau NẾU
không phải là lỗi đánh máy nhưng lệnh này yêu cầu cài đặt NẾU
đến nguồn cấp dữ liệu đơn):
xuất IFS='
'
cho tôi bằng $(dpkg -l |egrep '^[a-z]i.*' |awk '{print $2" install"}') ; làm echo $i|dpkg --set-selections ; xong
bỏ đặt IFS
Lý do/nguyên nhân của vấn đề này vẫn chưa được biết. Các ri
trạng thái được cho là có nghĩa là bỏ chọn
(trình quản lý gói debian cũ ngày nay được thay thế hoàn toàn bởi đúng cách
) đã được sử dụng để đánh dấu gói sẽ bị xóa khỏi hệ thống và nếu bạn thực sự muốn áp dụng các trạng thái lựa chọn đó, bạn có thể chạy apt-get dselect-nâng cấp
. Nhìn thấy người đàn ông dpkg
và phần "THÔNG TIN VỀ CÁC GÓI" để biết thêm thông tin.
Các cài đặt apt --reinstall tên gói
cũng không sao nhưng nó sẽ làm nhiều hơn mức thay đổi tối thiểu đối với hệ thống để khắc phục sự cố.