提示 Could not get lock /var/lib/dpkg/lock 報錯?
有些小伙伴在使用 apt 包管理器更新或安裝軟件時,可能會遇到過諸如以下的錯誤提示:
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 操作,因此鎖定了 apt 數據庫,所以暫時不能進行 apt 操作。
解決方案
那遇到這種情況,一般我們只需要安靜地等待幾分鍾,或者先去做其他的事情,比如瀏覽一下良許 Linux 公眾號里的文章,直到當前的更新、安裝或卸載任務完成后,鎖就會自動釋放,然后就可以進行 apt 操作了。
當然了,上面說的是正常情況下的對應,那非正常情況下,比方說你等了好多個幾分鍾鎖都還沒有被釋放,你就要看看是不是該進程由於某些原因而卡住了並且一直占用着鎖。如果是的話,那你只能干掉這個進程,然后刪除該鎖定了。
首先,我們先找出是哪個進程占用了鎖文件 /var/lib/dpkg/lock
$ sudo lsof /var/lib/dpkg/lock
其他鎖文件對應的命令
$ sudo lsof /var/lib/dpkg/lock-frontend
$ sudo lsof /var/lib/apt/lists/lock
然后得到輸出結果
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
如果需要,還可以刪除緩存目錄下的鎖文件
$ sudo rm /var/cache/apt/archives/lock
做完上面的步驟后,記得要運行以下命令
$ sudo dpkg --configure -a
這樣問題應該就可以解決了
最后,祝你好運!
公眾號:良許Linux
