แก้ไขปัญหา Apt-Get Lock Could Not Get Lock /var/lib/dpkg/lock-frontend ใน Ubuntu

ข้อความนี้E: Could not get lock /var/lib/dpkg/lock-frontendหมายความว่ากระบวนการจัดการแพ็กเกจอื่นกำลังล็อกไฟล์ที่ APT ต้องการอยู่ การล็อกนี้จะป้องกันการเปลี่ยนแปลงแพ็กเกจจากการทำงานที่ทับซ้อนกัน โดยทั่วไปจะปรากฏขึ้นเมื่อโปรแกรมอัปเดตซอฟต์แวร์ เทอร์มินัลอื่น หรือการอัปเดตอัตโนมัติกำลังติดตั้งหรือกำหนดค่าแพ็กเกจอยู่แล้ว วิธีแก้ไขที่ปลอดภัยที่สุดคือการระบุการทำงานนั้นและปล่อยให้มันเสร็จสิ้น การลบไฟล์ล็อกไม่ใช่ขั้นตอนแรกที่ควรทำอย่างไร

คำสั่งด้านล่างนี้ใช้ได้กับระบบ Ubuntu ที่ใช้ APT และ dpkg ป้ายกำกับเดสก์ท็อปและเวลาการอัปเดตอัตโนมัติจะแตกต่างกันไปตามรุ่นและการกำหนดค่าของ Ubuntu ดังนั้นให้พิจารณาผลลัพธ์ของกระบวนการบนเครื่องของคุณเป็นหลัก คู่มือ Ubuntu 24.04 LTS ที่ลิงก์ไว้ด้านล่างได้อธิบายคำสั่งเหล่านี้ไว้ หากพฤติกรรมแตกต่างออกไป โปรดดูคู่มือที่ตรงกับรุ่นของคุณ

ข้อผิดพลาดการล็อกบอกอะไรคุณบ้าง และมันไม่ได้บอกอะไรบ้าง

ตรวจสอบแล้ว: dpkg dpkg ติดตั้งและจัดการแพ็กเกจ ในขณะที่ APT เป็นส่วนหน้าของโปรแกรมจัดการแพ็กเกจระดับสูงกว่าlock-frontendเส้นทางนี้ใช้ในการประสานงานการจัดการแพ็กเกจ ดังนั้นข้อผิดพลาดจึงบ่งชี้ถึงความขัดแย้งในการล็อก ณ เวลาที่เรียกใช้คำสั่ง ไม่ใช่ฐานข้อมูลแพ็กเกจที่เสียหายเสมอไปคู่มือ dpkg ของ Ubuntuอธิบายบทบาทและสถานะของแพ็กเกจใน dpkg

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

ข้อความดังกล่าวไม่ได้พิสูจน์ว่าไฟล์ล็อกนั้นหมดอายุแล้ว Ubuntu ค้าง หรือฐานข้อมูลแพ็กเกจเสียหาย ไฟล์ล็อกอาจยังคงอยู่บนดิสก์หลังจากกระบวนการสิ้นสุดลง การมีอยู่ของไฟล์ล็อกเพียงอย่างเดียวไม่ได้แสดงว่ากระบวนการนั้นยังคงเป็นเจ้าของล็อกอยู่ ตรวจสอบกระบวนการก่อนทำการเปลี่ยนแปลงใดๆ

ขั้นตอนที่ 1: ตรวจสอบว่ามีการใช้งานโปรแกรมจัดการแพ็กเกจอยู่แล้วหรือไม่

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

หน้าต่าง Software Updater กำลังติดตั้งการอัปเดต โปรดรอจนกว่าการดำเนินการติดตั้งแพ็กเกจจะเสร็จสิ้นก่อนที่จะลองใช้คำสั่งในเทอร์มินัลอีกครั้ง
โปรแกรมอัปเดตซอฟต์แวร์แสดงว่ากำลังติดตั้งการอัปเดต โปรดรอจนกว่าการติดตั้งจะเสร็จสิ้นก่อนเริ่มงานอัปเดตแพ็กเกจอื่น

หากไม่เห็นการอัปเดตแบบกราฟิก โปรดตรวจสอบรายการกระบวนการ:

ps -eo pid,ppid,stat,etime,cmd | grep -E '[a]pt|[d]pkg|unattended'

มองหาคำสั่งต่างๆ เช่นapt, apt-get, dpkg, หรือ การพบคำ unattended-upgradeสั่งที่ตรงกันเป็นเพียงเบาะแส ไม่ใช่หลักฐานยืนยันว่าเป็นผู้ถือครองล็อก: การค้นหาอาจแสดงคำสั่งที่ไม่เกี่ยวข้องหรือตัวตรวจสอบเองด้วย จดบันทึก PID และคำสั่ง จากนั้นตรวจสอบกระบวนการในขั้นตอนถัดไป

ขั้นตอนที่ 2: ระบุขั้นตอนที่ล็อกอยู่

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

sudo fuser -v /var/lib/dpkg/lock-frontend

คุณสามารถตรวจสอบเส้นทางการล็อกของตัวจัดการแพ็กเกจทั่วไปอื่นๆ ได้เช่นกัน:

sudo fuser -v /var/lib/dpkg/lock /var/cache/apt/archives/lock /var/lib/apt/lists/lock

fuserโปรแกรมนี้ จะแสดงรหัสกระบวนการ (PID) ที่ใช้ไฟล์ที่ระบุ โดยโหมดละเอียดจะแสดงรายละเอียดของกระบวนการ หากแสดง PID ให้เปรียบเทียบกับรายการกระบวนการและตรวจสอบด้วยคำสั่ง `git log int` โดยps -fp PIDแทนที่PID`PID` ด้วยหมายเลขที่แสดง โปรแกรมอาจไม่แสดงผลลัพธ์ใดๆ หากไม่มีกระบวนการใดที่สามารถเข้าถึงได้และกำลังใช้งานเส้นทางนั้น การค้นพบนี้มีประโยชน์ แต่ไม่ใช่สาเหตุที่แท้จริงว่าทำไมคำสั่งก่อนหน้านี้จึงล้มเหลว โปรดดูคู่มือ Fuser ของ Ubuntuสำหรับรายละเอียดเกี่ยวกับผลลัพธ์และข้อจำกัดของโปรแกรม

เทอร์มินัลจะตรวจสอบกระบวนการ APT และ dpkg และถาม fuser ว่ากระบวนการใดกำลังเข้าถึงล็อกส่วนหน้า
คำสั่งเทอร์มินัลสำหรับตรวจสอบกระบวนการ apt และ dpkg และระบุกระบวนการโดยใช้ frontend lock

ขั้นตอนที่ 3: รอ หรือหยุดเฉพาะงานที่ค้างอยู่ซึ่งได้รับการยืนยันแล้วเท่านั้น

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

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

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

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

sudo kill -TERM PID

แทนที่PIDด้วยรหัสกระบวนการที่ได้รับการยืนยันแล้ว หลีกเลี่ยง การใช้คำสั่ง `docker run` kill -9, killall dpkg`docker run` หรือ ` fuser -kdocker run` เป็นการแก้ไขทั่วไป การยุติกระบวนการโดยใช้กำลังอาจขัดจังหวะสคริปต์ของแพ็กเกจหรือทำให้ต้องกู้คืนงาน หากงานนั้นเป็นบริการอัตโนมัติแทนที่จะเป็นงานที่คุณเริ่มต้น ให้ตรวจสอบสถานะหรือรอแทนที่จะยุติกระบวนการที่ไม่คุ้นเคย

ขั้นตอนที่ 4: ซ่อมแซมการกำหนดค่าแพ็กเกจเฉพาะในกรณีที่งานก่อนหน้านี้ถูกขัดจังหวะ

หากไม่มีกระบวนการ APT หรือ dpkg เหลืออยู่ และการติดตั้งหรืออัปเกรดครั้งก่อนถูกขัดจังหวะ ให้ขอให้ dpkg ดำเนินการกำหนดค่าแพ็กเกจที่แตกไฟล์แล้วให้เสร็จสิ้น จากนั้นตรวจสอบสถานะแพ็กเกจของ APT:

sudo dpkg --configure -a
sudo apt-get check
หลังจากตรวจสอบแล้วว่าไม่มีการดำเนินการแพ็กเกจใดทำงานอยู่ ระบบจึงสามารถเรียกใช้การกำหนดค่า dpkg และการตรวจสอบการพึ่งพาของ APT ได้
คำสั่งเทอร์มินัลสำหรับดำเนินการกำหนดค่า dpkg ที่ค้างอยู่ให้เสร็จสมบูรณ์ และตรวจสอบฐานข้อมูลแพ็กเกจหลังจากที่การทำงานถูกขัดจังหวะ

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

ความเข้าใจผิดทั่วไปเกี่ยวกับข้อผิดพลาดในการล็อก

  • “ไฟล์ล็อกอยู่ตรงนี้ ดังนั้นฉันควรลบมัน”ไม่ใช่ การมีไฟล์อยู่เฉยๆ ไม่ได้บอกว่ากระบวนการใดกำลังล็อกไฟล์นั้นอยู่ การลบไฟล์ในขณะที่กระบวนการยังทำงานอยู่ไม่ได้หยุดกระบวนการนั้น และอาจทำให้คำสั่งแพ็กเกจอื่นเริ่มทำงานกับฐานข้อมูลแพ็กเกจเดียวกันได้ ตรวจสอบด้วยคำสั่ง `ls` fuserและรายการกระบวนการแทน
  • “ไม่พบ PID ดังนั้นฐานข้อมูลจึงเสียหาย”ไม่จำเป็นเสมอไป ผู้ใช้งานอาจออกจากระบบระหว่างการตรวจสอบ การล็อกก่อนหน้านี้อาจถูกปล่อย หรือข้อผิดพลาดอาจเกี่ยวข้องกับเส้นทางการล็อกอื่น ลองใหม่อีกครั้งหลังจากยืนยันว่าไม่มีงานแพ็กเกจเหลืออยู่แล้ว ซ่อมแซม dpkg เฉพาะในกรณีที่การดำเนินการถูกขัดจังหวะหรือข้อผิดพลาดของแพ็กเกจบ่งชี้ว่าการกำหนดค่าไม่สมบูรณ์
  • “ข้อผิดพลาดการล็อกทุกครั้งจำเป็นต้องdpkg --configure -a...”คำสั่งนี้ใช้จัดการกับงานการกำหนดค่าที่ค้างอยู่ ไม่ได้แก้ปัญหาการล็อกที่ยังคงถูกถือครองโดยกระบวนการที่กำลังทำงานอยู่ รอหรือแก้ปัญหาการล็อกของกระบวนการที่กำลังทำงานอยู่ให้เรียบร้อยก่อน จากนั้นจึงใช้คำสั่งซ่อมแซมเมื่อจำเป็นเท่านั้น
  • “การล็อกจะถูกปลดล็อกโดยอัตโนมัติหลังจากผ่านไปจำนวนนาทีที่กำหนด”กำหนดการอัปเดตอัตโนมัติและระยะเวลาของงานขึ้นอยู่กับเวอร์ชัน การตั้งค่า เครือข่าย และเครื่องคอมพิวเตอร์ ควรตรวจสอบกระบวนการและสถานะความคืบหน้าจริงแทนที่จะพึ่งพาตัวจับเวลา

วิธีตรวจสอบว่าการแก้ไขได้ผลหรือไม่

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

หากเกิดข้อผิดพลาดเกี่ยวกับการล็อกขึ้นทันที ให้บันทึกเส้นทางการล็อกที่แน่นอน ผลลัพธ์ของsudo fuser -vคำสั่งสำหรับเส้นทางนั้น คำสั่งกระบวนการที่ตรงกัน และ PID รวมถึงว่างานยังคงดำเนินต่อไปหรือไม่ รายละเอียดเหล่านี้จะช่วยแยกแยะการอัปเดตที่แข่งขันกันตามปกติออกจากกระบวนการที่ต้องการการแก้ไขปัญหาเพิ่มเติม อย่าลบไฟล์ออกจาก/var/lib/dpkgหรือลบไฟล์ล็อกเพื่อใช้แทนการระบุตัวกระบวนการ

เอกสารอ้างอิงอย่างเป็นทางการ

ฝากความเห็น

วิธีเชื่อมต่อไคลเอ็นต์ Pardus Linux เข้ากับโดเมน Active Directory

วิธีเชื่อมต่อไคลเอ็นต์ Pardus Linux เข้ากับโดเมน Active Directory

เชื่อมต่อ Pardus Linux เข้ากับ Active Directory ด้วย Pardus Domain Joiner ตรวจสอบ DNS และเวลา ติดตั้ง CLI เชื่อมต่อด้วย SSSD และตรวจสอบสิทธิ์การเข้าสู่ระบบโดเมน

วิธีการตั้งค่า Pardus Image Creator สำหรับการติดตั้งระบบปฏิบัติการแบบกำหนดเอง

วิธีการตั้งค่า Pardus Image Creator สำหรับการติดตั้งระบบปฏิบัติการแบบกำหนดเอง

เรียนรู้ความสามารถของ Pardus Image Writer วิธีการติดตั้ง และวิธีการใช้งานไฟล์ ISO ที่กำหนดเองซึ่งได้รับการตรวจสอบแล้วไปยัง USB อย่างปลอดภัย รวมถึงคำแนะนำในการสร้างและทดสอบ

แก้ไขข้อผิดพลาด “Failed to Start Load Kernel Modules” ระหว่างการบูต SLES

แก้ไขข้อผิดพลาด “Failed to Start Load Kernel Modules” ระหว่างการบูต SLES

ตรวจสอบและแก้ไขข้อผิดพลาดของ systemd-modules-load.service บน SLES โดยการค้นหาโมดูลที่มีปัญหา แก้ไขการกำหนดค่าการบูต และสร้าง initramfs ใหม่เฉพาะเมื่อจำเป็นเท่านั้น

วิธีการย้ายเดสก์ท็อป Debian ไปยังระบบปฏิบัติการที่ไม่สามารถเปลี่ยนแปลงได้โดยใช้ OSTree

วิธีการย้ายเดสก์ท็อป Debian ไปยังระบบปฏิบัติการที่ไม่สามารถเปลี่ยนแปลงได้โดยใช้ OSTree

เรียนรู้ว่าเหตุใด Debian จึงไม่สามารถทำให้เป็น OSTree ที่ไม่สามารถเปลี่ยนแปลงได้ด้วยการติดตั้งแพ็กเกจเพียงแพ็กเกจเดียว จากนั้นจึงทำการย้ายไปยังเดสก์ท็อป OSTree อย่างปลอดภัย หรือวางแผนสร้างอิมเมจ Debian แบบกำหนดเอง

Fix Touchpad Gestures Not Working on Wayland in Ubuntu 24.04

Fix Touchpad Gestures Not Working on Wayland in Ubuntu 24.04

Fix missing three-finger touchpad gestures on Ubuntu 24.04 Wayland by checking GNOME settings, libinput events, updates, and extensions.

วิธีตั้งค่าสคริปต์สลับเอาต์พุตเสียง PipeWire บน Debian

วิธีตั้งค่าสคริปต์สลับเอาต์พุตเสียง PipeWire บน Debian

สร้างสคริปต์สลับเอาต์พุต PipeWire ที่เชื่อถือได้บน Debian ด้วย wpctl สลับระหว่างลำโพง, บลูทูธ, USB หรือ HDMI โดยไม่ต้องกำหนด ID แบบตายตัว

วิธีการตั้งค่าเครื่องพิมพ์ผ่าน CUPS บนระบบปฏิบัติการ HamoniKR

วิธีการตั้งค่าเครื่องพิมพ์ผ่าน CUPS บนระบบปฏิบัติการ HamoniKR

ตั้งค่าเครื่องพิมพ์ USB และเครื่องพิมพ์เครือข่ายบน HamoniKR OS ด้วย CUPS เพิ่มคิว เลือกใช้ IPP แบบไม่ต้องใช้ไดรเวอร์ หรือใช้ไดรเวอร์เฉพาะรุ่น ตั้งค่าเริ่มต้น และพิมพ์หน้าทดสอบ

วิธีจำกัดการใช้งาน CPU และ RAM ของกระบวนการด้วย Cgroups บน Ubuntu

วิธีจำกัดการใช้งาน CPU และ RAM ของกระบวนการด้วย Cgroups บน Ubuntu

ใช้ systemd cgroups บน Ubuntu เพื่อจำกัดเวลาการใช้งาน CPU และหน่วยความจำสำหรับคำสั่งหรือบริการ เปรียบเทียบขอบเขตชั่วคราว ข้อจำกัดถาวร และข้อดีข้อเสียที่สำคัญ

วิธีการแปลองค์ประกอบ UI ของ Gooroom OS เป็นภาษาอังกฤษ

วิธีการแปลองค์ประกอบ UI ของ Gooroom OS เป็นภาษาอังกฤษ

เปลี่ยนเมนูของ Gooroom OS เป็นภาษาอังกฤษเมื่อมีการรองรับภาษา ทำตามขั้นตอนการตั้งค่าของ GNOME, การใช้ภาษาสำรองของ Debian และการตรวจสอบการแก้ไขปัญหา

แก้ไขปัญหา Apt-Get Lock Could Not Get Lock /var/lib/dpkg/lock-frontend ใน Ubuntu

แก้ไขปัญหา Apt-Get Lock Could Not Get Lock /var/lib/dpkg/lock-frontend ใน Ubuntu

เรียนรู้วิธีแก้ไขข้อผิดพลาด apt-get lock ใน Ubuntu โดยการตรวจสอบกระบวนการแพ็กเกจที่ใช้งานอยู่ รออย่างปลอดภัย และซ่อมแซม dpkg เฉพาะเมื่อการอัปเดตถูกขัดจังหวะเท่านั้น