แก้ไข: ไม่สามารถเปิดไฟล์ล็อค / var / lib / dpkg / lock

การรับข้อความแสดงข้อผิดพลาดไม่สามารถเปิดไฟล์ล็อค / var / lib / dpkg / lock อาจทำให้เกิดความสับสนได้เนื่องจากอาจถามได้เป็นอย่างดีว่าคุณรูททันทีหรือไม่ในภายหลังแม้ว่าคุณจะเรียกใช้คำสั่งอัพเดตด้วยคำนำหน้า sudo คำสั่งข้อผิดพลาดนี้จะแสดงเกือบทุกอย่างที่ใช้ apt-get package manager ไม่ว่าคุณจะอัปเดตเดสก์ท็อปหรือแล็ปท็อปที่ใช้ Ubuntu หรือ Raspberry Pi เวอร์ชันต่างๆด้วยสปิน Raspbian Debian คุณอาจพบว่าอาจเป็นปัญหากับแพลตฟอร์มเหล่านี้

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

วิธีที่ 1: ตรวจสอบให้แน่ใจว่า sudo สามารถเข้าถึงทุกส่วนของคำสั่ง

หากคุณเรียกใช้ sudo apt-get update && apt-get upgrade คุณอาจได้รับข้อผิดพลาดนี้เนื่องจากกระบวนการที่สองไม่มีสิทธิ์ที่เหมาะสมในการเข้าถึงไฟล์ / var / lib / dpkg / lock

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

ไม่เช่นนั้นปัญหาได้รับการจัดการอย่างสมบูรณ์แล้วและคุณไม่จำเป็นต้องทำอะไรอีก

วิธีที่ 2: การลบไฟล์ / var / lib / dpkg / lock

ผู้ที่ใช้ curl, wget หรือคำสั่งอื่นที่ดาวน์โหลดไฟล์อย่างไม่ถูกต้องอาจต้องนำหน้าคำสั่งนั้นด้วย sudo หากพวกเขาทำงานจาก Raspbian เนื่องจากสิ่งนี้จะเข้ามาแทนที่ apt-get ในบางกรณี ผู้ที่ทำงานกับ Debian, Xubuntu, Lubuntu, Linux Mint และเดสก์ท็อป / แล็ปท็อปอื่น ๆ ที่คล้ายกันจะไม่ต้องกังวลกับเรื่องนี้ แต่ก็คุ้มค่าที่จะลองอีกครั้ง

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

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

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

การรีบูตบางครั้งช่วยได้ แต่ถ้าคุณใช้งานเซิร์ฟเวอร์หรืออุปกรณ์ Raspbian อยู่ตลอดเวลานี่อาจไม่ใช่ตัวเลือกที่ใช้งานได้ ลองเรียกใช้sudo rm / var / lib / dpkg / lock && sudo rm / var / lib / apt / list / lockซึ่งจะทำให้ไฟล์เฉพาะที่ apt กำลังดูอยู่เมื่อคุณเรียกใช้งาน อย่าลืมระวังชื่อของไฟล์เหล่านั้นเนื่องจากการรัน rm ในฐานะรูทนั้นเป็นการทำลายล้าง

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