Computer >> คอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

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

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

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

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

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

แก้ไข:ไม่สามารถเปิดล็อกไฟล์ /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/lists/lock ซึ่งจะทำให้ไฟล์เฉพาะที่เหมาะเจาะดูเมื่อคุณใช้งาน ตรวจสอบให้แน่ใจว่าได้ระมัดระวังเกี่ยวกับชื่อของไฟล์เหล่านั้น เนื่องจากการรัน rm เนื่องจากรูทเป็นการทำลายล้าง

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