ubuntu系統Could not get lock /var/lib/dpkg/lock - open問題解決

當利用sudo apt-get等命令卸載軟件時,出現如下問題:

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?

在這個時候,主要是因爲apt還在運行,此時的解決方案是:

1、找到並且殺掉所有的apt-get 和apt進程

運行下面的命令來生成所有含有 apt 的進程列表,你可以使用ps和grep命令並用管道組合來得到含有apt或者apt-get的進程。

ps -A | grep apt
找出所有的 apt 以及 apt-get 進程

sudo kill -9 processnumber
#或者
sudo kill -SIGKILL processnumber #processnumber是進程前面的序號數字,一般是四位數字

比如,下面命令中的9是 SIGKILL的信號數,它會殺掉第一個 apt 進程

sudo kill -9 進程ID
#或者
sudo kill -SIGKILL  進程ID

2、刪除鎖定文件

鎖定的文件會阻止 Linux 系統中某些文件或者數據的訪問,這個概念也存在於 Windows 或者其他的操作系統中。

一旦你運行了 apt-get 或者 apt 命令,鎖定文件將會創建於 /var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中。

這有助於運行中的 apt-get 或者 apt 進程能夠避免被其它需要使用相同文件的用戶或者系統進程所打斷。當該進程執行完畢後,鎖定文件將會刪除。

當你沒有看到 apt-get 或者 apt 進程的情況下在上面兩個不同的文件夾中看到了鎖定文件,這是因爲進程由於某個原因被殺掉了,因此你需要刪除鎖定文件來避免該錯誤。

首先運行下面的命令來移除 /var/lib/dpkg/ 文件夾下的鎖定文件:

$ sudo rm /var/lib/dpkg/lock
之後像下面這樣強制重新配置軟件包:

$ sudo dpkg --configure -a
也可以刪除 /var/lib/apt/lists/ 以及緩存文件夾下的鎖定文件:

$ sudo rm /var/lib/apt/lists/lock
$ sudo rm /var/cache/apt/archives/lock
接下來,更新你的軟件包源列表:

$ sudo apt update
或者
$ sudo apt-get update

參考鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章