มีคำตอบที่ดีอยู่ที่นี่ แต่ต้องการเพิ่มวิธีการที่ไม่ใช่ lsof ในการค้นหาผู้ใช้ล็อค dpkg
ขั้นตอนที่ 1: ค้นหาว่าใครกำลังล็อก dpkg:
ตัวเลือก # 1: การใช้ lsof (ไม่ได้ติดตั้งบนเครื่องเสมอ)
lsof /var/lib/dpkg/lock
ตัวเลือก # 2: การใช้ bash
for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done
ขั้นตอนที่ 2: ตัดสินใจว่าคุณต้องการทำอะไรกับผู้ใช้ dpkg ปัจจุบัน
หากไม่มีกระบวนการดังกล่าวไม่มีอะไรที่ต้องตัดสินใจเพียงข้ามไปยังขั้นตอนถัดไป
มิฉะนั้นคุณต้องตัดสินใจว่าคุณต้องการที่จะฆ่ากระบวนการหรือปล่อยให้มันเสร็จอย่างสง่างาม kill <pid>
หากคุณตัดสินใจที่จะฆ่ามันเพียงแค่ใช้ หากกระบวนการยังคงไม่ตายคุณสามารถลองฆ่ามันโดยใช้kill -9 <pid>
แต่มันอาจสร้างความไม่แน่นอนบางอย่างขึ้นมาและฉันแนะนำให้ทำอย่างนั้นถ้าคุณไม่ทราบว่าคุณกำลังทำอะไรอยู่
ขั้นตอนที่ 3: ลบไฟล์ล็อค
sudo rm /var/lib/dpkg/lock
ขั้นตอนที่ 4: แก้ไขสถานะภายใน dpkg
sudo dpkg --configure -a