在Linux相关系统下更新apt或者使用apt-get命令安装软件包时常会出现dpkg相关文件被锁定的情况。个人总结了和该情况相关的一些解决方法,我自己也时常遇到这个问题,也当做是个cookbook来用,遇到的时候查看一下就能解决。
出现的问题
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
进程:- 查找所有
apt
相关的进程:ps afx|grep apt
- 并用命令结束:
sudo kill -9 xxxxx # xxxxx是进程号
- 查找所有
-
删除锁定文件:
-
锁定的文件会阻止
Linux
系统中某些文件或者数据的访问,这个概念也存在于Windows
或者其他的操作系统中。
一旦运行了apt-get
或者apt
命令,锁定文件将会创建于/var/lib/apt/lists/
,/var/lib/dpkg/
,/var/cache/apt/archives/
中,这有助于运行中的apt-get
或者apt
进程能够避免被其它需要使用相同文件的用户或者系统进程所打断。当该进程执行完毕后,锁定文件将会删除。 - 移除对应目录下的锁文件:
sudo rm -rf /var/lib/dpkg/lock
或
sudo rm -rf /var/lib/dpkg/lock-frontend
- 强制重新配置软件包:
sudo dpkg --configure -a
- 更新软件包源文件:
sudo apt update
-
-
删除锁定文件后配置软件包可能出现的问题
- 问题描述:
dpkg: error: parsing file '/var/lib/dpkg/updates/0006' near line 0: newline in field name `#padding'
- 解决方法:
sudo rm -rf /var/lib/dpkg/updates/0006 sudo dpkg --configure -a sudo apt update
或
sudo rm -rf /var/lib/dpkg/updates/* sudo dpkg --configure -a sudo apt update
- 问题描述:
重新执行相关安装
sudo apt-get install xxxx # xxxx是软件包名