ปลดล็อก APT ของ Ubuntu อย่างปลอดภัยและทำการอัปเดตให้เสร็จสมบูรณ์

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

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

1. ให้เวลาโปรแกรมอัปเดตของ Ubuntu ทำงานจนเสร็จสิ้น

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

ตรวจสอบบริการ systemd ที่เกี่ยวข้องและรอสักครู่หากมีบริการใดทำงานอยู่:

systemctl status apt-daily.service apt-daily-upgrade.service

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

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

2. ระบุว่าใครเป็นผู้ถือครองการควบคุมส่วนหน้า (frontend lock)

ใช้fuserคำสั่งนี้เพื่อแสดงกระบวนการที่กำลังเข้าถึงล็อก จากนั้นตรวจสอบ PID ที่คำสั่งนี้รายงาน:

sudo fuser -v /var/lib/dpkg/lock-frontend
ps -fp 2468

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

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

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

เอาต์พุตเทอร์มินัลจาก fuser และ ps ที่ระบุถึงกระบวนการ apt และ PID ของกระบวนการนั้น
ใช้ PID และชื่อคำสั่งที่รายงานมาเพื่อแยกแยะตัวอัปเดตที่กำลังทำงานอยู่กับคำสั่งที่คุณพยายามเรียกใช้

3. จัดการกับกรณีที่เครื่องติดขัดอย่างระมัดระวัง

หากกระบวนการดังกล่าวเป็นการอัปเดตอัตโนมัติ โปรดตรวจสอบสถานะและบันทึกก่อนที่จะเข้าไปแทรกแซง:

systemctl status apt-daily-upgrade.service
sudo journalctl -u apt-daily-upgrade.service -b --no-pager

เมื่อบริการกำลังดำเนินการอยู่ ให้ปล่อยมันไว้ หากคุณพบคำสั่งแพ็กเกจที่คุณเรียกใช้เองและเห็นได้ชัดว่ามันค้างอยู่ ให้ขัดจังหวะมันหนึ่งครั้งจากเทอร์มินัลของมันเองด้วยคำสั่งCtrl+Cและรอจนกว่ามันจะกลับไปยังเชลล์ อย่าใช้คำสั่งkill -9, killall dpkg, หรือลบไฟล์ภายใต้/var/lib/dpkg; การหยุดสคริปต์แพ็กเกจอย่างกะทันหันอาจทำให้แพ็กเกจถูกแตกไฟล์แต่ยังไม่ได้กำหนดค่า

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

ผลลัพธ์จากคำสั่ง `systemctl status` ของ Ubuntu แสดงให้เห็นว่า `apt-daily-upgrade.service` ทำงานอยู่พร้อมกับกระบวนการ `apt`
การที่บริการ apt-daily-upgrade ทำงานอยู่ เป็นเหตุผลที่ควรจะรอและตรวจสอบความคืบหน้า ไม่ใช่เหตุผลในการปลดล็อกบริการนั้น

4. สถานะแพ็คเกจการซ่อมแซมหลังจากปลดล็อกแล้ว

เมื่อไม่มีตัวจัดการแพ็กเกจใดใช้ตัวล็อกอยู่ ให้ดำเนินการกำหนดค่าแพ็กเกจที่ค้างอยู่ให้เสร็จสมบูรณ์:

sudo dpkg --configure -a

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

sudo apt-get -f install

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

sudo apt-get update
sudo apt-get install PACKAGE_NAME

แทนที่PACKAGE_NAMEด้วยแพ็กเกจที่คุณต้องการติดตั้งคู่มือAPT-get-f ของ Ubuntu อธิบายถึงวิธีการแก้ไขปัญหาการพึ่งพาแพ็กเกจที่เสียหาย และคู่มือ dpkgอธิบายถึงขั้นตอนการกำหนดค่าแพ็กเกจ หาก APT ยังคงรายงานว่ามีการล็อก ให้ตรวจสอบกระบวนการซ้ำอีกครั้ง อาจมีการเริ่มต้นงานติดตั้งแพ็กเกจที่สองในระหว่างนั้น

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

ตรวจสอบว่าการซ่อมแซมสำเร็จแล้ว

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

คู่มือ Noble ฉบับปัจจุบันของ Ubuntu อธิบายคำสั่งแพ็กเกจข้างต้นไว้แล้ว ระยะเวลาการทำงานของบริการและชื่อกระบวนการจะแตกต่างกันไปตามรุ่นของ Ubuntu และเครื่องมือแพ็กเกจเดสก์ท็อปที่ติดตั้ง แต่กฎหลักยังคงเหมือนเดิม: รอให้เจ้าของล็อกเสร็จสิ้น จากนั้นซ่อมแซม dpkg หากการดำเนินการก่อนหน้านี้ถูกขัดจังหวะ

สำหรับข้อมูลอ้างอิงคำสั่ง โปรดดูคู่มือ apt-get ของ Ubuntuและคู่มือ dpkg ของ Ubuntu

ฝากความเห็น

ปลดล็อก APT ของ Ubuntu อย่างปลอดภัยและทำการอัปเดตให้เสร็จสมบูรณ์

ปลดล็อก APT ของ Ubuntu อย่างปลอดภัยและทำการอัปเดตให้เสร็จสมบูรณ์

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

วิธีตั้งค่าการสร้างสแนปช็อต Btrfs อัตโนมัติบน Ubuntu Desktop

วิธีตั้งค่าการสร้างสแนปช็อต Btrfs อัตโนมัติบน Ubuntu Desktop

ตั้งค่าการสร้างสแนปช็อตระบบ Btrfs ตามกำหนดเวลาบน Ubuntu Desktop ด้วย Timeshift ตรวจสอบโครงสร้างซับโวลุ่มของ Ubuntu เลือกช่วงเวลาการเก็บรักษา และทำความเข้าใจว่าสแนปช็อตไม่สามารถปกป้องอะไรได้บ้าง

วิธีการย้าย Debian 12 ไปยังเวอร์ชัน Testing โดยไม่ทำให้การพึ่งพา (Dependency) เสียหาย

วิธีการย้าย Debian 12 ไปยังเวอร์ชัน Testing โดยไม่ทำให้การพึ่งพา (Dependency) เสียหาย

วางแผนการอัปเกรดจาก Debian 12 ไปยัง Testing อย่างปลอดภัยยิ่งขึ้น: อัปเกรดผ่านเวอร์ชัน Stable สำรองข้อมูล ล้างแหล่ง APT จำลองการเปลี่ยนแปลงของส่วนประกอบต่างๆ และตรวจสอบว่ามีอะไรเปลี่ยนแปลงบ้าง

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

วิธีการบูต Ubuntu Server เข้าสู่โหมดฉุกเฉิน: คู่มือการกู้คืนทีละขั้นตอน

ตรวจสอบและวินิจฉัยโหมดฉุกเฉินของ Ubuntu Server อย่างปลอดภัย อ่านบันทึกการบูต ตรวจสอบการเมานต์รูทและ fstab ซ่อมแซมหน่วยที่ล้มเหลว จัดการข้อผิดพลาดของระบบไฟล์ และตรวจสอบการรีบูตที่สะอาดหมดจด

วิธีการตั้งค่า WireGuard Point-to-Site VPN บน Debian 12

วิธีการตั้งค่า WireGuard Point-to-Site VPN บน Debian 12

ตั้งค่าเซิร์ฟเวอร์ VPN WireGuard บน Debian 12 สำหรับไคลเอ็นต์ระยะไกลหนึ่งราย กำหนดค่าคีย์ การส่งต่อ IPv4 NAT nftables การเข้าถึงไฟร์วอลล์ และการตรวจสอบการเชื่อมต่อ

Step-by-Step Debian 12 Hardening Guide for CIS Compliance

Step-by-Step Debian 12 Hardening Guide for CIS Compliance

Harden a Debian 12 workstation with a careful CIS Benchmark workflow: select the right profile, patch safely, review services and access, configure nftables, and document evidence.

Debian 12 บน VPS ที่มี RAM ต่ำ: วิธีลดปัญหา MySQL OOM Crashes

Debian 12 บน VPS ที่มี RAM ต่ำ: วิธีลดปัญหา MySQL OOM Crashes

วินิจฉัยปัญหา MySQL OOM kills บน Debian 12 ตรวจสอบขีดจำกัดหน่วยความจำของ VPS กำหนดค่า swap และปรับแต่งหน่วยความจำและการทำงานพร้อมกันของฐานข้อมูล โดยไม่รับประกันว่าจะแก้ไขปัญหาได้ทั้งหมด

How to Build a Debian Desktop as an OSTree-Based Immutable System

How to Build a Debian Desktop as an OSTree-Based Immutable System

Learn how to create and test a Debian-derived OSTree desktop in a VM, including system-tree preparation, boot integration, deployment checks, and rollback.

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

How to Mount a Remote SSHFS Directory Automatically at Boot in Debian

Configure an SSHFS boot mount in Debian with SSH keys, fstab, and systemd automount. Includes reboot checks, permissions, timeouts, and troubleshooting.

เช็กลิสต์ดูแลบ้านเดือนตุลาคม 2569 สำหรับกรุงเทพฯ และปริมณฑล: รับมือปลายฤดูฝน น้ำท่วม ความชื้น เชื้อรา ยุง และแอร์

เช็กลิสต์ดูแลบ้านเดือนตุลาคม 2569 สำหรับกรุงเทพฯ และปริมณฑล: รับมือปลายฤดูฝน น้ำท่วม ความชื้น เชื้อรา ยุง และแอร์

เช็กลิสต์ดูแลบ้านเดือนตุลาคม 2569 สำหรับกรุงเทพฯ และปริมณฑล แยกข้อมูลภูมิอากาศระยะยาวออกจากพยากรณ์ระยะสั้น พร้อมงานระบายน้ำ ป้องกันเชื้อรา ยุง ไฟฟ้า และดูแลแอร์อย่างปลอดภัย