ในขณะที่ทำงานบำรุงรักษาอื่น ๆ ฉันสังเกตเห็นว่า dpkg -l
ระบุไว้ประมาณ 90 แพ็คเกจพร้อมสถานะ รี
แทนที่จะคาดหวัง ii
.
ฉันรักษาแพ็คเกจเพียงอย่างเดียวด้วย ฉลาด
และ ความถนัด
และฉันไม่ได้บังคับแพ็คเกจใด ๆ แต่ฉันทำเป็นประจำ apt install --no-install-recommends ...
เพื่อหลีกเลี่ยงการรับแพ็คเกจที่ไม่จำเป็น ฉันยังพยายามรักษาการตั้งค่าสถานะ "ติดตั้งโดยอัตโนมัติ" อย่างระมัดระวัง และฉันมีแพ็คเกจ 2914 ที่มีสถานะ "ติดตั้งโดยอัตโนมัติ" (ค้นหาความถนัด '~i~M'
) และ 422 แพ็คเกจที่มีสถานะ "ติดตั้งด้วยตนเอง" (ค้นหาความถนัด '~i!~M'
).
อะไรเป็นสาเหตุที่ทำให้แพ็คเกจมีสถานะ ลบ
+ Inst
(รี
) ใน dpkg -l
รายการเมื่อฉันไม่ได้ร้องขอให้ลบแพ็คเกจเหล่านั้น? ดูเหมือนว่าแพ็คเกจที่มีสถานะนี้เป็นแพ็คเกจที่ฉันต้องการเก็บไว้ในระบบ อาจเช่น sudo apt dist-อัพเกรด
ทำให้เกิดสิ่งนี้โดยที่ฉันไม่ทันสังเกต?
(ฉันรู้ว่าฉันสามารถติดตั้งแพ็คเกจเหล่านั้นใหม่ด้วย apt install --reinstall ชื่อแพ็คเกจ
เพื่อรับสถานะกลับเป็น ii
. ฉันมักจะล้างแพ็คเกจที่ลบออกและ ค้นหาความถนัด '~c'
รายการไม่มีแพ็คเกจ)
รายละเอียดเพิ่มเติมจากระบบอื่นที่มีปัญหาเดียวกัน:
$ sudo apt dist-upgrade && sudo apt autoremove && dpkg -l | เกรป ^ri | สุขา -l
กำลังอ่านรายการแพ็กเกจ...เสร็จแล้ว
สร้างต้นไม้พึ่งพา
กำลังอ่านข้อมูลสถานะ...
กำลังคำนวณการอัปเกรด... เสร็จสิ้น
แพ็คเกจต่อไปนี้ถูกเก็บกลับ:
virtualbox-6.0
0 อัพเกรด, 0 ติดตั้งใหม่, 0 ที่จะลบและ 1 ไม่ได้อัพเกรด
กำลังอ่านรายการแพ็กเกจ...เสร็จแล้ว
สร้างต้นไม้พึ่งพา
กำลังอ่านข้อมูลสถานะ...
0 อัพเกรด, 0 ติดตั้งใหม่, 0 ที่จะลบและ 3 ไม่ได้อัพเกรด
171
ดังนั้น dist-อัพเกรด
ก็ไม่เช่นกัน ลบอัตโนมัติ
อย่าแตะ 171 แพ็คเกจด้วย รี
สถานะ.
ตัวอย่างแพ็คเกจกับ รี
สถานะ:
$ dpkg -l ca-ใบรับรอง-java
Desired=Unknown/Install/Remove/Purge/Hold
| สถานะ=ไม่/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (สถานะ,Err: ตัวพิมพ์ใหญ่=ไม่ดี)
||/ ชื่อ เวอร์ชัน สถาปัตยกรรม คำอธิบาย
+-============================================== =============================-==================== ========-======================================== ================================================== =========
ri ca-certificates-java 20160321ubuntu1 ใบรับรอง CA ทั่วไปทั้งหมด (ที่เก็บคีย์ JKS)
และข้อมูลเพิ่มเติมสำหรับแพ็คเกจเดียวกัน:
$ ความถนัดแสดง ca-certificates-java
แพ็คเกจ: ca-certificate-java
สถานะ: ติดตั้งแล้ว
ติดตั้งอัตโนมัติ: ไม่
Multi-Arch: ต่างประเทศ
รุ่น: ...
ความถนัด $ ทำไม ca-certificates-java
ฉันเริ่มต้น jre-หัวขาด ขึ้นอยู่กับ openjdk-8-jre-หัวขาด
iBA openjdk-8-jre-headless ขึ้นอยู่กับ ca-certificates-java
$ apt-mark โชว์โฮลด์
virtualbox-6.0
ข้อมูลเพิ่มเติมหลังจากอ่านเกี่ยวกับสาเหตุที่เป็นไปได้:
ตามที่อธิบายไว้ในคำตอบ https://askubuntu.com/a/802612/50254 สถานะของแพ็คเกจเหล่านี้สามารถแก้ไขให้ตรงกับแพ็คเกจที่ติดตั้งในปัจจุบันได้โดยการเรียกใช้ (โปรดทราบว่าการป้อนบรรทัดหลัง ไอเอฟเอส
ไม่ใช่การพิมพ์ผิด แต่คำสั่งนี้ต้องมีการตั้งค่า ไอเอฟเอส
เพื่อป้อนบรรทัดเดียว):
ส่งออก IFS='
'
สำหรับ i ใน $(dpkg -l |egrep '^[a-z]i.*' |awk '{print $2" install"}') ; ทำ echo $i|dpkg --set-selections ; เสร็จแล้ว
ยกเลิกการตั้งค่า IFS
สาเหตุ/สาเหตุของปัญหานี้ยังไม่ทราบ เดอะ รี
สถานะควรจะหมายความว่าอย่างนั้น dเลือก
(ตัวจัดการแพ็คเกจเดเบียนเก่าในปัจจุบันถูกแทนที่ด้วย ฉลาด
) ใช้เพื่อทำเครื่องหมายแพ็คเกจที่จะลบออกจากระบบ และหากคุณต้องการใช้สถานะการเลือกเหล่านั้นจริง ๆ คุณสามารถเรียกใช้ได้ apt-รับ dselect-upgrade
. ดู คน dpkg
และส่วน "ข้อมูลเกี่ยวกับแพ็คเกจ" สำหรับข้อมูลเพิ่มเติม
เดอะ apt install --reinstall ชื่อแพ็คเกจ
ก็โอเค แต่จะทำมากกว่าการเปลี่ยนแปลงขั้นต่ำในระบบเพื่อแก้ไขปัญหา