天天看點

解決 Ubuntu “Could not get lock /var/lib/dpkg/lock” 問題

作者:鸠摩智首席音效師
解決 Ubuntu “Could not get lock /var/lib/dpkg/lock” 問題

最近,我遇到了 “Could not get lock /var/lib/dpkg/lock”的錯誤,我既不能安裝任何軟體包,也不能更新系統。此錯誤也與“Could not get lock /var/lib/apt/lists/lock”錯誤密切相關。以下是 Ubuntu 20.04 上的一些樣本輸出。

Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock. It is held by process 3620 (apt)
N: Be aware that removing the lock file is not a solution and may break your system.
E: Unable to lock directory /var/lib/apt/lists/           
解決 Ubuntu “Could not get lock /var/lib/dpkg/lock” 問題

這可能會非常令人沮喪,經常會讓你陷入困境,無法更新、更新或安裝任何軟體包。

是什麼導緻了這個錯誤

正如錯誤所提示的那樣,另一個程序正在使用 /var/lib/dpkg/lock 或 /var/lib/dpkg/lock 檔案。當您有 2 個或多個終端運作系統更新或更新時,就會發生這種情況。當您過早地取消或以其他方式更新 / 更新時,也可能發生這種情況。

如果遇到這種錯誤,完全沒有必要驚慌,讓我們探讨一些解決方案。

(1) 關閉所有正在使用 APT 管理器的程序

列出使用 apt 包管理器的程序

$ ps aux | grep - i apt           
解決 Ubuntu “Could not get lock /var/lib/dpkg/lock” 問題

結束正在使用 apt 包管理器的程序

$ sudo kill -9 3619
$ sudo kill -9 3620           

再次使用 ps 指令,驗證程序是否結束,如果它們都已清除,就可以繼續更新系統。

(2) 删除鎖定檔案

在某些情況下,根本原因可能是鎖檔案。鎖檔案阻止兩個或多個程序通路相同的資料。當您運作 apt 或 apt-get 指令時,通常會建立一個鎖檔案。但是,如果最新的 apt 指令沒有成功執行(即突然終止),鎖檔案将繼續存在并阻止任何後續的 apt 或 apt-get 執行個體。

解決 “Could not get lock /var/lib/apt/lists/lock”錯誤

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

解決 “Could not get lock /var/lib/dpkg/lock”錯誤

$ sudo rm /var/lib/dpkg/lock           

其他時候,您可能會遇到 “/var/lib/dpkg/lock-frontend error”的錯誤。這意味着目前正在運作使用 APT / DPKG 的圖形應用程式,這可能是使用 Gdebi 或 Synaptic 包管理器造成的。

即時的補救措施是退出或關閉程式,并再次嘗試。如果沒有效果,可是嘗試删除 /var/lib/dpkg/lock-frontend 檔案。

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

删除 lock-frontend 檔案可能會再次導緻“Could not get lock /var/lib/dpkg/lock”錯誤,是以,您将不得不繼續删除相關鎖定檔案。

$ sudo rm /var/lib/dpkg/lock           

如果您碰巧會出現有關 apt-cache lock 的錯誤,例如 /var/cache/apt/archives/lock,請删除相關鎖定檔案。

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

我的開源項目

解決 Ubuntu “Could not get lock /var/lib/dpkg/lock” 問題

酷瓜雲課堂 - 開源線上教育解決方案

  • course-tencent-cloud(酷瓜雲課堂 - gitee 倉庫)
  • course-tencent-cloud(酷瓜雲課堂 - github 倉庫)