Score:4

เหตุใดแพ็คเกจที่ติดตั้งจึงมีสถานะ "ลบ"

ธง cn

ในขณะที่ทำงานบำรุงรักษาอื่น ๆ ฉันสังเกตเห็นว่า 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 ชื่อแพ็คเกจ ก็โอเค แต่จะทำมากกว่าการเปลี่ยนแปลงขั้นต่ำในระบบเพื่อแก้ไขปัญหา

Terrance avatar
id flag
ฉันไม่แน่ใจ 100% แต่สำหรับฉันแล้วดูเหมือนว่าแพ็คเกจที่ทำเครื่องหมายด้วย `ri` อาจขึ้นอยู่กับแพ็คเกจอื่นที่ถูกลบออกไป แต่พวกมันไม่ได้ถูกลบออกเพราะบางทีสวิตช์ `--autoremove` สำหรับ `apt ` ไม่ได้ใช้ แต่ฉันไม่แนะนำให้ใช้ `--autoremove ' เนื่องจากคุณอาจลบแพ็คเกจที่จำเป็นอื่น ๆ ฉันหวังว่าส่วนหนึ่งของการจัดการแพ็คเกจจะสมบูรณ์แบบ แต่ก็ไม่เป็นเช่นนั้น ฉันฆ่าระบบโดยไม่ตั้งใจเพราะแอปตั้งค่าทั้งหมดสำหรับการลบอัตโนมัติ
cn flag
นั่นเป็นคำแนะนำที่ดี แต่นั่นไม่ใช่สาเหตุ ฉันได้เพิ่มข้อมูลว่าทั้ง 'dist-upgrade' หรือ 'autoremove' ไม่ได้ทำอะไรกับแพ็คเกจเหล่านี้
Terrance avatar
id flag
อืม ใช่ ขออภัย ฉันไม่มีข้อเสนอแนะในเรื่องนี้ +1 และหวังว่าจะมีคนอื่นเจอสิ่งนี้ กำลังเรียกใช้ `dpkg -l | grep -w "ri"` ไม่ได้ให้ผลอะไรในระบบของฉัน แต่ `dpkg -l | grep -w "rc"` ทำ แต่สำหรับ config และสถานการณ์ที่แตกต่างไปจากเดิมอย่างสิ้นเชิง ฉันหวังว่าคุณจะพบคำตอบ!
Terrance avatar
id flag
ฉันได้ตรวจสอบสถานการณ์ของคุณให้ลึกลงไปอีกเล็กน้อย และแม้ว่าฉันจะไม่พบคำตอบที่แน่ชัดว่าอะไรคือสาเหตุที่แท้จริง แต่อาจมีเงื่อนงำบางอย่างที่สามารถแก้ไขได้ใน https://askubuntu.com/posts/1352232 /edit , https://askubuntu.com/a/165961/231142 และ https://askubuntu.com/a/166254/231142
cn flag
@Terrance: ดูเหมือนว่าแพ็คเกจที่ทำเครื่องหมาย `ri` ตรงกับรายการนี้: `dpkg --get-selections | awk '$2 == "ถอนการติดตั้ง" {พิมพ์ $1}'` ดังนั้น คำถามคือกระบวนการใดที่อาจทำเครื่องหมาย `deinstall` สำหรับ `dselect` โดยไม่ตั้งใจ เมื่อฉันไม่ได้ใช้ `dselect` เพื่ออะไร
Terrance avatar
id flag
อ๊ะ ฉันเพิ่งรู้ว่าในความคิดเห็นด้านบนของฉัน ลิงก์แรกคือลิงก์ที่อยู่ในบัฟเฟอร์ของฉัน ความผิดฉันเอง. ให้ฉันดูว่าฉันสามารถหาลิงค์ที่ถูกต้องที่นั่นได้ไหม มันมีข้อมูลที่ดีอยู่ในนั้น
Terrance avatar
id flag
น่าเสียดายที่ฉันไม่รู้ว่าอะไรเป็นสาเหตุของมัน ฉันเดาว่าคุณสามารถดูบันทึกใน `/var/log/dpkg.log` หรือบางทีเช่น `journalctl -xe` ฉันหวังว่าฉันจะประสบปัญหาเดียวกันจริงๆ เพราะมันจะช่วยให้มีดวงตาคู่ที่สอง อีกลิงค์หนึ่งที่ฉันพบคือที่ที่เรียกใช้ `--clear-selections' และทำให้เกิดสิ่งที่คล้ายกัน เป็นการยากที่จะบอกว่าสิ่งนี้อาจถูกเรียกใช้หรือไม่ https://askubuntu.com/questions/687272/revert-accidental-dpkg-clear-selections?rq=1
cn flag
ใช่ ฉันเคยอ่านเกี่ยวกับ `dpkg --clear-selections` มาแล้วเหมือนกัน แต่ฉันไม่ได้ทำอย่างนั้นแน่นอน และ *ฉันจะไม่เรียกใช้หลังจากอ่านสิ่งที่ทำแล้ว* ฉันยังพบว่าในอดีต `deinstall` ใช้เพื่อส่งสัญญาณ `dpkg` โดย `dselect` ว่าควรลบแพ็คเกจออก อย่างไรก็ตาม ฉันเพิ่งตรวจสอบและไม่ได้ติดตั้ง `dselect` ด้วยซ้ำ ดังนั้นไม่ควรตั้งค่าสถานะที่ไม่ถูกต้อง ปัญหาที่น่าสนใจมากแน่นอน การคาดเดาในปัจจุบันของฉันน่าจะเป็นว่าแพ็คเกจ VirtualBox ดำเนินการคำสั่งผิดเนื่องจากทั้งสองระบบนี้ติดตั้ง VirtualBox และปัญหานี้ดูเหมือนจะค่อนข้างหายากโดยทั่วไป
cn flag
ฉันได้ตรวจสอบ `journalctl` แล้ว และไม่ได้กล่าวถึงแพ็คเกจที่มีปัญหาในช่วง 1.5 ปีที่ผ่านมาที่ฉันมีบันทึก ระบบได้รับการติดตั้งเมื่อประมาณ 11 เดือนก่อนหน้านี้ ดังนั้นข้อผิดพลาดจะต้องเกิดขึ้นในเวลานั้น หรือสาเหตุใดก็ตามที่ทำให้ระบบไม่เข้าสู่ `journalctl` เลย
Score:2
ธง de

ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่มืออาชีพในเรื่องของการแจกแจง ดังนั้นนี่เป็นเพียงการคาดเดาของฉันโดยการใส่ 1 และ 1 หลายๆ ครั้งเข้าด้วยกัน

อารัมภบท

ในเครื่อง Ubuntu รุ่นเก่าฉันมีแพ็คเกจเดียวที่มีสถานะ รี, ซึ่งเป็น libllvm5.0 (และอื่นๆอีกมากมายปกติ ii-แพ็คเกจถูกใจ libllvm4.0 และ libllvm6.0). แพ็คเกจ <= libllvm5.0 ถูกทำเครื่องหมายว่าติดตั้งด้วยตนเอง แต่ libllvm6.0 ถูกทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติ
ดังนั้นฉันเดาว่ามันเป็นการพึ่งพาและได้รับอีเธอร์ที่ล้าสมัยโดยการอัปเกรดหรือลบแพ็คเกจที่ขึ้นต่อกัน

คำอธิบาย

ผ่านการโต้แย้ง/เงื่อนไขของคุณทีละข้อ:

  • ฉันใช้เท่านั้น --no-ติดตั้ง-แนะนำ:
    มีการติดตั้งการพึ่งพาที่จำเป็นอย่างไรก็ตามไม่เช่นนั้นโปรแกรมจะไม่ทำงาน
  • ลบอัตโนมัติ ไม่ทำอะไรกับแพ็คเกจเหล่านี้:
    ชนิดของ... ฉันค่อนข้างแน่ใจว่าทั้งหมด รี- แพ็คเกจเหลือคนเดียวโดย ลบอัตโนมัติ ถูกทำเครื่องหมายเป็น ด้วยตนเอง ติดตั้งแล้ว แม้ว่าคุณจะไม่เคยติดตั้ง "แยกต่างหาก" นี่เป็นเพราะหลังจากการตั้งค่าเริ่มต้น แพ็คเกจน้อยมาก (ถ้ามี?) ถูกทำเครื่องหมายว่าติดตั้งโดยอัตโนมัติเนื่องจากไม่สามารถระบุได้ว่าแพ็คเกจใด คุณ จะติดตั้งโดยเจตนาเพราะสิ่งนี้จะแตกต่างกันไปในแต่ละผู้ใช้ (ดังนั้น... ชนิดของ "คุณได้ติดตั้งระบบปฏิบัติการของคุณด้วยตนเอง")
  • สามารถ sudo apt dist-อัพเกรด สาเหตุนี้?:
    ไม่และใช่... sudo apt dist-อัพเกรด ด้วยตัวมันเองไม่ได้ทำให้เกิดสิ่งนี้ แต่ด้วยการอัปเกรดระบบทั้งหมด มีโอกาสมากขึ้นที่แพ็คเกจจำนวนมาก (ติดตั้งครั้งแรก) จะล้าสมัย

เพื่อสรุป เหตุผล: ฉันเดาว่าแพ็คเกจเหล่านี้ได้รับการติดตั้งโดยการตั้งค่าเริ่มต้น ดังนั้นการทำเครื่องหมายว่าติดตั้งด้วยตนเอง จากนั้นจึงล้าสมัยโดยการอัปเกรดบางแพ็คเกจหรือการแจกจ่ายทั้งหมด และเนื่องจากมีการทำเครื่องหมายว่าติดตั้งด้วยตนเอง จึงไม่ถูกแตะต้อง ลบอัตโนมัติ.

cn flag
นี่เป็นคำอธิบายที่สมเหตุสมผล แพ็คเกจทั้งหมดที่มีสถานะ 'ri' จะมีสถานะ 'ติดตั้งโดยอัตโนมัติ: ไม่' เมื่อสอบถามด้วย 'ชื่อแพ็คเกจการแสดงความถนัด' อย่างไรก็ตาม ฉันคาดหวังว่า *ทั้งหมด* แพ็คเกจที่ติดตั้งด้วยตนเองจะยังคงอยู่ในสถานะ `ii` เสมอ แทนที่จะถูกทำเครื่องหมายเพื่อลบด้วยสถานะ `ri`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา