Điểm:4

Tại sao các gói đã cài đặt có trạng thái "Xóa"?

lá cờ cn

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áchnă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ố.

Terrance avatar
lá cờ id
Tôi không chắc chắn 100%, nhưng đối với tôi, có vẻ như các gói được đánh dấu bằng `ri` có thể phụ thuộc vào một gói khác đã bị xóa nhưng chúng không bị xóa vì có thể công tắc `--autoremove` cho `apt ` không được sử dụng. Nhưng tôi không khuyên bạn nên sử dụng `--autoremove` vì bạn có thể xóa các gói cần thiết khác. Tôi ước rằng một phần của quản lý gói là hoàn hảo, nhưng không phải vậy. Tôi đã vô tình giết chết các hệ thống vì một ứng dụng đã đặt tất cả chúng ở chế độ tự động xóa.
lá cờ cn
Đó là một gợi ý tốt nhưng nó không phải là nguyên nhân. Tôi đã thêm thông tin về cách cả `dist-upgrade` và `autoremove` đều không làm gì với các gói này.
Terrance avatar
lá cờ id
Hmmmmm, vâng, xin lỗi, tôi không có đề xuất nào về đề xuất này. +1 và hy vọng ai đó đã tình cờ phát hiện ra điều này. Đang chạy `dpkg -l | grep -w "ri"` không mang lại kết quả gì trên hệ thống của tôi, nhưng `dpkg -l | grep -w "rc"` thì có, nhưng đó là dành cho cấu hình và một kịch bản hoàn toàn khác. Tôi hy vọng bạn tìm thấy một câu trả lời!
Terrance avatar
lá cờ id
Tôi đã tìm hiểu sâu hơn một chút về tình huống của bạn và mặc dù tôi thực sự không tìm thấy bất kỳ câu trả lời chắc chắn nào cho nguyên nhân thực sự gây ra điều này, nhưng có thể tìm thấy một số manh mối để có thể khắc phục tại https://askubuntu.com/posts/1352232 /edit , https://askubuntu.com/a/165961/231142 và https://askubuntu.com/a/166254/231142
lá cờ cn
@Terrance: Có vẻ như các gói được đánh dấu `ri` khớp với danh sách này: `dpkg --get-selections | awk '$2 == "gỡ cài đặt" {in $1}'`. Vì vậy, câu hỏi đặt ra là quy trình nào có thể vô tình đánh dấu `deinstall` cho `dselect` khi tôi không sử dụng `dselect` cho bất kỳ thứ gì?
Terrance avatar
lá cờ id
Rất tiếc, tôi mới nhận ra rằng trong nhận xét trên của tôi, liên kết đầu tiên là liên kết nằm trong bộ đệm của tôi. Lỗi của tôi. Hãy để tôi xem nếu tôi có thể tìm thấy liên kết chính xác ở đó. Nó có một số thông tin tốt trong đó.
Terrance avatar
lá cờ id
Thật không may, tôi không biết chính xác những gì gây ra nó. Tôi đoán bạn có thể xem qua nhật ký trong `/var/log/dpkg.log` hoặc có thể là thứ gì đó như `journalctl -xe`. Tôi thực sự ước mình cũng gặp phải vấn đề tương tự vì việc có một đôi mắt thứ hai sẽ thực sự hữu ích. Một liên kết khác mà tôi đã tìm thấy là nơi chạy `--clear-selections` và gây ra sự cố tương tự. Thật khó để nói nếu điều này có thể đã được chạy. https://askubuntu.com/questions/687272/revert-accidental-dpkg-clear-selections?rq=1
lá cờ cn
Vâng, tôi cũng đã đọc về `dpkg --clear-selections`, nhưng tôi chắc chắn chưa chạy nó. Và *Tôi sẽ không chạy nó sau khi đọc những gì nó làm*. Tôi cũng nhận thấy rằng `deinstall` trước đây được sử dụng để báo hiệu `dpkg` bởi `dselect` rằng một gói nên được gỡ bỏ. Tuy nhiên, tôi vừa mới kiểm tra và tôi thậm chí còn chưa cài đặt `dselect` nên không nên đặt các cờ không chính xác. Vấn đề rất thú vị thực sự. Dự đoán hiện tại của tôi là gói VirtualBox đã thực thi một số lệnh sai vì cả hai hệ thống này đều đã cài đặt VirtualBox và vấn đề này nói chung có vẻ khá hiếm gặp.
lá cờ cn
Tôi cũng đã kiểm tra `journalctl` và nó không đề cập đến gói có vấn đề trong 1,5 năm qua mà tôi có nhật ký. Hệ thống đã được cài đặt khoảng 11 tháng trước đó nên chắc chắn lỗi đã xảy ra vào thời điểm đó hoặc bất kỳ nguyên nhân nào khiến việc này hoàn toàn không đăng nhập vào `journalctl`.
Điểm:2
lá cờ de

tuyên bố miễn trừ trách nhiệm: tôi không phải là chuyên gia khi phân phối, vì vậy đây chỉ là những phỏng đoán của tôi bằng cách đặt 1 và 1 nhiều lần với nhau.

phần mở đầu

trên máy Ubuntu cũ hơn, tôi có một gói có trạng thái ri, đó là libllvm5.0 (và một loạt các bình thường khác ii-gói như libllvm4.0libllvm6.0). các gói <= libllvm5.0 được đánh dấu là cài đặt thủ công nhưng libllvm6.0 được đánh dấu là cài đặt tự động.
vì vậy tôi đoán rằng đó là một gói phụ thuộc và ether đã lỗi thời bằng cách nâng cấp hoặc xóa gói phụ thuộc.

giải trình

lần lượt đi qua các đối số/điều kiện của bạn:

  • tôi chỉ sử dụng --no-install-recommend:
    tốt, tuy nhiên, các phụ thuộc cần thiết đã được cài đặt, nếu không thì chương trình sẽ không hoạt động.
  • tự động xóa không làm gì với các gói này:
    tốt, loại ... tôi khá chắc chắn rằng tất cả ri-các gói bị bỏ lại một mình bởi tự động xóa được đánh dấu là thủ công được cài đặt, mặc dù bạn chưa bao giờ cài đặt nó "riêng". điều này là do sau khi thiết lập ban đầu, rất ít gói (nếu có?) được đánh dấu là được cài đặt tự động do thực tế là không thể xác định gói nào bạn sẽ được cài đặt có chủ ý vì điều này sẽ khác nhau tùy theo người dùng. (vì vậy ... một loại "bạn đã cài đặt hệ điều hành của mình theo cách thủ công".)
  • có thể nâng cấp sudo apt dist gây ra điều này?:
    không và có... nâng cấp sudo apt dist tự nó không gây ra điều này, nhưng với việc nâng cấp toàn bộ hệ thống, nhiều khả năng một loạt các gói (được cài đặt ban đầu) sẽ trở nên lỗi thời.

bọc lại NGUYÊN NHÂN: tôi đoán rằng các gói này đã được cài đặt theo thiết lập ban đầu, do đó được đánh dấu là được cài đặt thủ công và sau đó trở nên lỗi thời bằng cách nâng cấp một số gói hoặc toàn bộ bản phân phối. và bởi vì chúng được đánh dấu là được cài đặt thủ công, chúng không bị chạm vào tự động xóa.

lá cờ cn
Điều này nghe có vẻ giải thích hợp lý. Tất cả các gói có trạng thái `ri` cũng có trạng thái `Tự động cài đặt: không` khi được truy vấn với `aptitude show packagename`. Tuy nhiên, tôi mong muốn *tất cả* các gói được cài đặt thủ công luôn ở trạng thái `ii` thay vì bị đánh dấu để xóa với trạng thái `ri`.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.