修複 Ubuntu 中“Unable to lock the administration directory (/var/lib/dpkg/)”的
在 Ubuntu 或者它的衍生版如 Linux Mint(我已經作為日常工作使用的係統)中使用 apt-get 命令或者其相對更新的APT 管理工具時,你可能會在命令行中看到一個 unable to lock the administration directory (/var/lib/dpkg/) is another process using it
的錯誤。
這個錯誤尤其對那些對這個錯誤原因不了解的 Linux(Ubuntu)新手而言更加惱人。
下麵是一個例子,展示了出現在 Ubuntu 16.10 上的文件鎖定錯誤:
tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
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/
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?
你將來遇到這個錯誤該怎麼去解決?有好幾種方法處理這個錯誤,但是本篇中我們會用兩種或許是最簡單和最有效的方法來解決它。
1、找出並殺掉所有 apt-get 或者 apt 進程
運行下麵的命令來生成所有含有 apt 的進程列表,你可以使用 ps
和 grep 命令並用管道組合來得到含有 apt 或者 apt-get 的進程。
$ ps -A | grep apt
找出 apt 以及 apt-get 進程
你可以看到上麵命令輸出的每個 apt-get 或者 apt 進程,使用下麵的命令殺掉每個進程。
上麵截圖中的第一列是進程 ID(PID)。
$ sudo kill -9 processnumber
或者
$ sudo kill -SIGKILL processnumber
比如,下麵命令中的9
是 SIGKILL
的信號數,它會殺掉第一個 apt 進程:
$ sudo kill -9 13431
或者
$ sudo kill -SIGKILL 13431
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
原文發布時間為:2017-12-16
本文來自雲棲社區合作夥伴“Linux中國”
最後更新:2017-06-06 07:37:23
上一篇:
httpstat:一個檢查網站性能的 curl 統計分析工具
下一篇:
如何在 Linux 中複製文件到多個目錄中
JSON的操作與使用
語音識別真的比肩人類了?聽聽阿裏iDST初敏怎麼說
專訪技術達人Patrick Chanezon:如衝浪一般隨時代而行,容器創造了截然不同的軟件構件模式
Asp.net+Xml實現無數據庫論壇一點即通
Nginx 配置無效——幾中情況
yield在WCF中的錯誤使用——99%的開發人員都有可能犯的錯誤[下篇]
Android提高篇之自定義dialog實現processDialog“正在加載”效果、使用Animation實現圖片旋轉
蘋果又一新專利 可通過監測用戶使用習慣來省電
UML之用例圖
經典故障分析 - ASSM引發的索引爭用與 enq HW -contention 等待事件