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

วิธีแก้ไขข้อผิดพลาด 'You Have Held Broken Package' บน Linux (Apt)

คุณอาจพบว่าเมื่อคุณพยายามติดตั้งแพ็คเกจบน Linux คุณพบบรรทัดที่น่ากลัวที่อ่านว่า E:ไม่สามารถแก้ไขปัญหาได้ แสดงว่าคุณเก็บแพ็คเกจที่เสียหายไว้ การติดตั้งปฏิเสธที่จะดำเนินการเกินกว่าจุดนี้ คุณอาจพบสิ่งนี้ในการกระจาย Linux ใดๆ ที่ใช้ apt-get ในการจัดการแพ็คเกจ ซึ่งรวมถึง Debian เช่นเดียวกับการแยกส่วน Linux Mint และ Ubuntu ต่างๆ

มีสาเหตุมาจากการขึ้นต่อกันที่เสียหาย ซึ่งเป็นผลข้างเคียงจากการติดตั้งแพ็คเกจที่ขึ้นอยู่กับแพ็คเกจอื่นที่ไม่ได้ติดตั้ง เมื่อ apt-get ทำการติดตั้งบางอย่าง จะพบว่าไม่สามารถเข้าถึงสิ่งที่ต้องการได้ จึงไม่สามารถดำเนินการต่อได้ เคล็ดลับบรรทัดคำสั่งพื้นฐานบางประการรวมถึงเครื่องมือกราฟิกสามารถแก้ไขปัญหาทุกอย่างได้อย่างรวดเร็ว

วิธีที่ 1:การใช้ dpkg – กำหนดค่าเพื่อแก้ไขแพ็คเกจที่ใช้งานไม่ได้

ขณะทำงานที่เทอร์มินัล ให้ลองเรียกใช้ sudo dpkg –configure -a เพื่อเริ่มกระบวนการอัพเดตอัตโนมัติที่จะค้นหาการพึ่งพาที่เสียหายในระบบของคุณที่เกิดจากแพ็คเกจที่ไม่ได้ติดตั้ง เครื่องมือนี้ควรติดตั้งแพ็คเกจใด ๆ ที่รู้สึกว่าคุณหายไปโดยอัตโนมัติโดยที่ผู้ใช้ไม่ต้องดำเนินการใดๆ แม้ว่าหากคุณถูกขอให้ติดตั้งบางอย่าง คุณควรกดปุ่ม y เพื่อตอบสนองต่อข้อความแจ้ง

หากไม่พบแพ็คเกจที่เสียหาย คุณก็ไม่ควรเห็นผลลัพธ์ใดๆ เรารันสิ่งนี้บนเครื่องทดสอบใหม่ทั้งหมดที่ใช้ Xubuntu ดังนั้นจึงไม่พบข้อผิดพลาดใดๆ แต่หากคุณได้รับปัญหา “ไม่สามารถแก้ไขปัญหาได้ คุณมีแพ็คเกจที่ใช้งานไม่ได้” การดำเนินการนี้อาจพบแพ็คเกจหลายรายการที่คุณต้องติดตั้ง เมื่อคุณเรียกใช้แล้ว ให้ลอง sudo apt-get install -f จากบรรทัดคำสั่ง

โปรแกรมนี้จะผ่านและสร้างรายการการพึ่งพาจากนั้นอ่านข้อมูลสถานะ หากคุณได้รับข้อความระบุว่ามีแพ็คเกจ "0 อัปเกรดแล้ว 0 เพิ่งติดตั้งใหม่ 0 ที่จะลบและ 0 ไม่ได้อัปเกรด" แสดงว่าคุณกำลังทำงานโดยไม่มีการขึ้นต่อกันที่เสียหายหรือคำสั่งก่อนหน้าแก้ไขทุกอย่าง ณ จุดนี้ คุณสามารถเรียกใช้ sudo apt-get clean &&sudo apt-get update ตามด้วย sudo apt-get upgrade เพื่ออัพเดตทุกแพ็คเกจบนระบบของคุณ การดำเนินการนี้อาจใช้เวลาสักครู่ขึ้นอยู่กับระยะเวลาที่ระบบของคุณมีปัญหาเกี่ยวกับแพ็คเกจเหล่านี้

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

หากคุณได้รับข้อความแจ้งว่า “บางแพ็คเกจถูกระงับ” ดังนั้นคุณจึงไม่สามารถดำเนินการคำสั่งก่อนหน้าได้สำเร็จ คุณควรรัน sudo apt-get dist-upgrade เพื่อติดตั้งแพ็คเกจที่เหลือเหล่านี้ เช่นเดียวกับการทำหน้าที่ของการอัพเกรดปกติ ตัวเลือก dist-upgrade จะจัดการการขึ้นต่อกันที่เปลี่ยนแปลงด้วยแพ็คเกจเวอร์ชันที่ใหม่กว่า เนื่องจาก apt-get มีระบบความขัดแย้งแบบพิเศษ โดยปกติแล้วจะพยายามอัปเกรดแพ็คเกจที่สำคัญที่สุดโดยแลกกับการไม่ทำอะไรกับแพ็คเกจที่มีความสำคัญน้อยกว่าต่อระบบของคุณ การใช้คำสั่งนี้บังคับให้แม้แต่คำสั่งเหล่านั้นต้องอัปเดต

ดังที่กล่าวไว้ หากตรวจไม่พบแพ็คเกจที่เสียหาย คุณจะพบข้อความที่สามว่าไม่มีการอัปเกรดและไม่มีอะไรติดตั้งใหม่ หากเป็นกรณีนี้ คุณสามารถลอง sudo apt-get upgrade อีกครั้งเพื่อที่ว่าหากมีการเปลี่ยนแปลงใดๆ รูทีนย่อยการอัปเกรดอัตโนมัติก็สามารถระงับได้ ในทางกลับกัน หากคุณทราบชื่อเฉพาะของแพ็คเกจที่คุณต้องการ คุณสามารถติดตั้งได้ด้วยตนเอง

ตัวอย่างเช่น สมมติว่าคอมโพเนนต์รันไทม์ของ GNUStep คือสิ่งที่คุณขาดไปเนื่องจากคุณต้องการใช้การสังเคราะห์เสียง คุณสามารถพิมพ์ sudo apt-get install gnustep-gui-runtime ได้เลย เพื่อติดตั้งแพ็คเกจสำคัญนี้ โปรดทราบว่านี่เป็นเพียงตัวอย่างเท่านั้น และคุณสามารถแทนที่ gnustep-gui-runtime ด้วยชื่อของแพ็คเกจใดๆ ที่คุณต้องการติดตั้ง การแจกแจงสมัยใหม่ที่อิงตามมาตรฐาน apt-get มีแพ็คเกจหลายพันแพ็คเกจ แต่ตราบใดที่คุณทราบชื่อของแพ็คเกจที่คุณกำลังมองหา ก็จะบังคับให้ติดตั้ง

วิธีที่ 3:แก้ไขแพ็คเกจที่เสียหายด้วย Synaptic

หากคุณมีตัวจัดการแพ็คเกจกราฟิก Synaptic คุณสามารถใช้เครื่องมือนี้เพื่อแก้ไขแพ็คเกจที่เสียหายที่คุณอาจมีได้ เปิดโปรแกรมแล้วเลือกเมนูแก้ไขรายการเลือกแบบเลื่อนลง คุณควรมีตัวเลือก "แก้ไขแพ็คเกจที่เสียหาย" ในเมนูนี้ ดังนั้นให้เลือกตัวเลือกนี้หากคุณทำเช่นนั้น การดำเนินการจะใช้เวลาไม่นานนักหากไม่มีแพ็คเกจที่เสียหายจำนวนมาก แต่อาจพบข้อผิดพลาดหลายประการซึ่งจะทำให้การดำเนินการช้าลง

เมื่อดำเนินการทุกอย่างเสร็จแล้ว คุณจะสังเกตเห็นคำว่า “แก้ไขปัญหาการพึ่งพาได้สำเร็จ” ในบรรทัดสถานะด้านล่าง

ตอนนี้คุณสามารถอัปเดตและติดตั้งแพ็คเกจได้ตามปกติ ผู้ใช้ส่วนใหญ่จะทำสิ่งต่าง ๆ ในลักษณะนี้เฉพาะเมื่อพวกเขาทำงานใน Synaptic อยู่แล้ว แต่จะอยู่ที่นั่นทุกครั้งที่คุณต้องการ เมื่อรันแล้ว คุณสามารถปิด Synaptic และทำงานจากพรอมต์คำสั่งอีกครั้งหรือดำเนินการเปลี่ยนแปลงต่อที่นี่

เกี่ยวกับผู้เขียน

วิธีแก้ไขข้อผิดพลาด  You Have Held Broken Package  บน Linux (Apt)

เควิน แอร์โรว์ส

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