แก้ไขปัญหา 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หรือลบไฟล์ล็อกเพื่อใช้แทนการระบุตัวกระบวนการ

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

ฝากความเห็น

ดาวน์โหลด FlightGear ได้ฟรี: คู่มือการติดตั้งอย่างเป็นทางการ

ดาวน์โหลด FlightGear ได้ฟรี: คู่มือการติดตั้งอย่างเป็นทางการ

ดาวน์โหลด FlightGear ได้ฟรีจากเว็บไซต์ทางการ เปรียบเทียบแพ็กเกจสำหรับ Windows, macOS และ Linux ติดตั้งไฟล์ข้อมูล และเริ่มต้นการบินครั้งแรกของคุณ

OKSampler: โปรแกรมแซมpler เพลงฟรีและใช้งานง่าย สำหรับสร้างจังหวะจากคีย์บอร์ด

OKSampler: โปรแกรมแซมpler เพลงฟรีและใช้งานง่าย สำหรับสร้างจังหวะจากคีย์บอร์ด

OKSampler แปลงคลิป MP3 เป็นคีย์บนแป้นพิมพ์และสามารถเล่นเสียงวนซ้ำได้ เรียนรู้ว่าซอฟต์แวร์ฟรีรุ่นเก่านี้ทำอะไรได้บ้าง ฟีเจอร์เก่าๆ สิ้นสุดลงตรงไหน และควรตรวจสอบอะไรบ้างก่อนดาวน์โหลด

แอปพลิเคชัน Google Tasks สำหรับเดสก์ท็อป: วิธีใช้งานบนคอมพิวเตอร์

แอปพลิเคชัน Google Tasks สำหรับเดสก์ท็อป: วิธีใช้งานบนคอมพิวเตอร์

เปิด Google Tasks ในเบราว์เซอร์ เพิ่มทางลัด Chrome หรือเปิดใช้งานในรูปแบบแอป และจัดการรายการสิ่งที่ต้องทำตามวันที่ผ่านปฏิทินและ Gmail

วิธีเล่นเกม Don't Starve Together บน Linux

วิธีเล่นเกม Don't Starve Together บน Linux

ติดตั้งเกม Don't Starve Together เวอร์ชัน Linux ผ่าน Steam เริ่มเล่นในโลกใหม่ หรือเข้าร่วมกับเพื่อน ๆ โดยทำตามขั้นตอนการตั้งค่าและการแก้ไขปัญหาเหล่านี้

วิธีเล่น DiRT Rally บน Linux: การตั้งค่า Steam และการแก้ไขปัญหา Proton

วิธีเล่น DiRT Rally บน Linux: การตั้งค่า Steam และการแก้ไขปัญหา Proton

เรียนรู้วิธีเล่น DiRT Rally บน Linux หากคุณมีเกมนี้อยู่แล้วบน Steam: ติดตั้งเวอร์ชันสำหรับระบบ Linux โดยเฉพาะ เปิดใช้งาน และใช้ Proton เป็นตัวเลือกสำรองเท่านั้น

วิธีเล่นเกม Squad บน Linux ด้วย Steam Proton

วิธีเล่นเกม Squad บน Linux ด้วย Steam Proton

ติดตั้งเกม Squad บน Linux โดยใช้ Steam Play และ Proton จากนั้นติดตั้งเกม เลือกเครื่องมือตรวจสอบความเข้ากันได้ และแก้ไขปัญหาเกี่ยวกับการโกงเกม

วิธีการติดตั้ง Linux Mint Debian Edition 5 “Elsie” จาก USB

วิธีการติดตั้ง Linux Mint Debian Edition 5 “Elsie” จาก USB

ดาวน์โหลดและตรวจสอบไฟล์ ISO ของ LMDE 5 ที่จัดเก็บไว้ สร้าง USB ที่สามารถบูตได้ และเลือกการตั้งค่าการติดตั้งที่ปลอดภัย Elsie หมดอายุการใช้งานแล้ว โปรดดู LMDE เวอร์ชันปัจจุบัน

วิธีสร้างไดรฟ์ USB ที่สามารถบูต Windows 11 ได้บนระบบ Linux

วิธีสร้างไดรฟ์ USB ที่สามารถบูต Windows 11 ได้บนระบบ Linux

สร้าง USB สำหรับติดตั้ง Windows 11 บน Linux ด้วย Ventoy: ดาวน์โหลดไฟล์ ISO อย่างเป็นทางการ ติดตั้ง Ventoy อย่างปลอดภัย คัดลอกอิมเมจ และบูตไปยังพีซีเป้าหมาย

วิธีการติดตั้ง Wireshark บน Linux: Ubuntu, Fedora, Arch และอื่นๆ

วิธีการติดตั้ง Wireshark บน Linux: Ubuntu, Fedora, Arch และอื่นๆ

ติดตั้ง Wireshark บน Ubuntu, Debian, Fedora, Arch หรือ openSUSE โดยใช้คำสั่งแพ็กเกจปัจจุบัน จากนั้นกำหนดค่าการจับแพ็กเก็ตแบบเรียลไทม์ได้อย่างปลอดภัย

วิธีการติดตั้ง Devuan Linux จาก USB ที่สามารถบูตได้

วิธีการติดตั้ง Devuan Linux จาก USB ที่สามารถบูตได้

ติดตั้ง Devuan Excalibur จากไฟล์ ISO แบบ Live บนเดสก์ท็อป ตรวจสอบไฟล์ที่ดาวน์โหลด สร้าง USB ที่สามารถบูตได้ ป้องกันพาร์ติชั่นที่มีอยู่ และทำการติดตั้งให้เสร็จสมบูรณ์ด้วย Refracta Installer