แก้ไข “E: Could not get lock /var/lib/dpkg/lock” Error ใน Ubuntu

ผมใช้งาน Ubuntu 18.04 LTS บน VM บ่อยมากผ่าน Digital ocean เพื่อลองเล่นอะไรหลายๆ อย่าง หรือนำมาใช้งานจริง แต่วันนี้ดันเจอเหตุการณ์ที่ว่าพอสั่ง apt-get update หรือ apt-get install มัน error

E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

หรือบ้างครั้งก็เจอประมาณนี้

E: Could not get lock /var/lib/dpkg/lock - open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?
E: Could not get lock /var/lib/apt/lists/lock – open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/

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

แก้ไข “E: Could not get lock /var/lib/dpkg/lock”

เราต้องหา id process ของตัว lock file ก่อนซึ่งสังเกตุจากที่มันแสดง error ออกมา เช่น /var/lib/dpkg/lock หรือ /var/lib/dpkg/lock-frontend โดยใช้คำสั่ง

sudo lsof /var/lib/dpkg/lock

มันจะ output ออกมาประมาณนี้

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unattende 1548 root 6uW REG 8,2 0 1181062 /var/lib/dpkg/lock

สังเกตุเลข PID จะเป็น 1548 เราก็ทำการ kill มันซะ

sudo kill -9 1548

จากนั้นก็ลบมันด้วย

sudo rm /var/lib/dpkg/lock

หรือ

sudo rm /var/lib/dpkg/lock-frontend

หรือ

sudo rm /var/lib/apt/lists/lock

โดยเราควรลบ lock file ใน cache directory ด้วย

sudo rm /var/cache/apt/archives/lock

หลังจากลบแล้วสั่งคำสั่ง

sudo dpkg --configure -a

จบ เพียงเท่านี้เราก็จะสามารถสั่ง apt-get update หรือ apt-get install ได้ละ