如題,在使用 APT 安裝套件時,如果當下有其它的 APT process 執行中,便會出現下列錯誤訊息:

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? 

 

首先,先查看是不是有其它 APT process 在執行:

$ ps aux | grep apt
Calos      18343  0.0  0.0  12948   904 pts/9    S+   10:32   0:00 grep --color=auto apt

 

指令列中出現的是 grep 的參數,並不是 APT process,如果有出現其它的 process,建議先嘗試以正常方式去結束掉它,不要輕易的執接 kill process,因為有可能會導致系統損毀。

這邊的例子是沒有出現,代表可能前一次在執行 APT 時因為某些因素導致意外結束,我們可以透過 find 指令搜尋 /var/cache/apt/archives/lock/var/lib/apt/var/lib/dpkg 這三個目錄下是否存在 lock file:

$ sudo find /var/cache/apt /var/lib/apt /var/lib/dpkg -name lock
/var/cache/apt/archives/lock
/var/lib/apt/lists/lock
/var/lib/dpkg/lock

 

三個目錄分別出現一個 lock file,但是卻沒有 APT process 在執行,前一次執行 APT 沒有正常結束時就會有這個情況發生。至於為什麼錯誤訊息顯示的錯誤路徑是 /var/lib/dpkg?簡單來說,APT  是一個套件管理工具,而實際上將套件安裝到系統的任務是由 dpkg  負責,而出現錯誤時我們通常都是看到 dpkg 跳警告而不是 APT。

 

處理這種情況,先刪除 lock file 後,再重新執行 APT,大多時候通常只要這樣就可以了。但如果運氣非常好,就會有個大坑  出現在你眼前。

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock

References:

留言