Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

แก้ 'You Have Held Broken Packages' Error บน Linux (Apt)

ตอนพยายามติดตั้งแพ็กเกจบน Linux อาจเจอบรรทัดน่ากลัว “E: Unable to correct problems, you have held broken packages” การติดตั้งหยุดที่นี่ ไม่ยอมไปต่อ อาจเจอใน distro ใดๆ ที่ใช้ apt-get จัดการแพ็กเกจ รวมถึง Debian, Linux Mint, Ubuntu spin-offs

สาเหตุคือ broken dependencies ซึ่งเป็น side-effect จาก packages ที่ติดตั้งแล้วขึ้นอยู่กับ packages อื่นที่ไม่ได้ติดตั้ง ตอน apt-get จะติดตั้ง มันสังเกตว่าเข้าถึง dependency ที่ต้องการไม่ได้ จึงไม่สามารถดำเนินต่อได้ คำสั่ง command line พื้นฐานและ graphical tool ช่วยแก้ได้เร็ว

วิธีที่ 1: ใช้ dpkg –configure แก้ Held Broken Packages

ที่ terminal ลองรัน sudo dpkg --configure -a เริ่มกระบวนการอัตโนมัติหา broken dependencies จาก packages ที่ไม่ได้ติดตั้ง Tool นี้ควรติดตั้ง package ที่ขาดหายไปอัตโนมัติโดยไม่ต้อง intervene ถ้าถามให้ติดตั้ง กด y

ถ้าไม่พบ broken packages จะไม่มี output เรารันบน Xubuntu test machine สะอาด ไม่เจอ error แต่ถ้าคุณเจอ “Unable to Correct Problems, You have Held Broken Packages” อาจพบหลาย packages ที่ต้องติดตั้ง หลังรันแล้ว ลอง sudo apt-get install -f

โปรแกรมนี้จะสร้าง dependency list แล้วอ่าน state information ถ้าได้ข้อความ “0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded” แสดงว่าไม่มี broken dependencies หรือคำสั่งก่อนหน้าแก้หมดแล้ว ตอนนี้รัน sudo apt-get clean && sudo apt-get update ตามด้วย sudo apt-get upgrade อัปเดททุกแพ็กเกจ อาจนานขึ้นอยู่กับว่าระบบมี package issues นานแค่ไหน

วิธีที่ 2: ใช้คำสั่ง dist-upgrade

ถ้าได้ข้อความ “some packages have been held back” ทำให้คำสั่งก่อนไม่สำเร็จ ให้รัน sudo apt-get dist-upgrade ติดตั้ง packages ที่เหลือ dist-upgrade ทำงานเหมือน upgrade ปกติ แต่จัดการ changed dependencies กับ newer versions ของ packages เนื่องจาก apt-get มี special conflict system มัก upgrade important packages แล้วทิ้ง less vital ones คำสั่งนี้ force ให้ update ทุกตัว

ถ้าไม่พบ broken packages จะได้ข้อความ nothing upgraded/nothing newly installed อีกครั้ง กรณีนี้ลอง sudo apt-get upgrade อีกครั้ง ถ้ามีการเปลี่ยนแปลง automatic upgrade subroutine จะทำงาน หากรู้ชื่อ package ที่ต้องการติดตั้งเจาะจง สามารถติดตั้ง manual ได้

เช่น สมมติ GNUStep runtime component ขาด เพราะอยากใช้ voice synthesis พิมพ์ sudo apt-get install gnustep-gui-runtime ติดตั้ง package สำคัญนี้ นี่แค่ตัวอย่าง แทน gnustep-gui-runtime ด้วยชื่อ package ใดๆ ที่ต้องการ Distributions สุดท้ายที่ based on apt-get มี packages หลายพัน ตราบใดที่รู้ชื่อ package ที่ต้องการ จะ force install ได้

วิธีที่ 3: แก้ Broken Packages ด้วย Synaptic

ถ้ามี Synaptic graphical package manager ใช้ tool นี้แก้ broken packages ได้ เปิดโปรแกรม เลือก Edit drop-down menu จะมี “Fix Broken Packages” เลือกมัน ถ้ามี รันเร็วถ้า broken packages น้อย แต่อาจช้าถ้าพบ errors หลายอย่าง

จบแล้ว จะเห็นคำว่า “Successfully fixed dependency problems” ใน status bar ด้านล่าง

ตอนนี้ update และ install packages ได้ปกติ ผู้ใช้ส่วนใหญ่ทำแบบนี้ถ้ากำลังทำงานใน Synaptic อยู่แล้ว แต่ tool พร้อมใช้ตอนต้องการ รันเสร็จปิด Synaptic กลับไป command prompt หรือทำต่อที่นี่ก็ได้

ABOUT THE AUTHOR

แก้  You Have Held Broken Packages  Error บน Linux (Apt)

Kevin Arrows

Kevin Arrows เป็นผู้เชี่ยวชาญด้านเทคโนโลยีที่มีประสบการณ์มากกว่า 10 ปี ได้รับการรับรอง Microsoft Certified Technology Specialist (MCTS) มีความหลงใหลในการอัปเดตเทคโนโลยีล่าสุด เขียนบทความเกี่ยวกับหัวข้อเทคโนโลยีกว้างขวาง แสดงความเชี่ยวชาญในด้านการพัฒนาซอฟต์แวร์ ความปลอดภัยไซเบอร์ และ Cloud Computing ได้รับการยอมรับและเคารพจากเพื่อนร่วมงาน สามารถอธิบายแนวคิดทางเทคนิคที่ซับซ้อนได้อย่างชัดเจนและกระชับ