【Debug】关于Could not get lock /var/lib/dpkg/lock-frontend解决办法

429 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第20天,点击查看活动详情

作者:[柒号华仔]

个人信条:星光不问赶路人,岁月不负有心人。

个人方向:专注于5G领域,同时兼顾其他网络协议,编解码协议,C/C++,linux等,感兴趣的小伙伴可以关注我,一起交流。


现象

在ubuntu下安装docker时,执行sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common,弹出如下错误信息:

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?

无法获取dpdk前端锁。 在这里插入图片描述

原因

当系统可能有多个进程会对相同数据执行操作时,正在运行的进程需要保证其它进程没有在操作,以免损坏数据。进程会创建一个lock文件来告诉别的进程自己在运行,如果检测到lock文件存在则认为有操作相同数据的进程在工作。

问题核心还是在于apt进程加锁的问题:当前系统中apt进程正处于运行中,为了保护apt进程安全,系统给予了apt相关进程lock,产生的锁定文件位于锁/var/lib/apt/lists/、/var/lib/dpkg/、/var/cache/apt/archives/ 中,能够避免apt进程被其它需要使用相同文件的用户或者系统进程所打断。如果当前一个apt命令非正常终止,比如kill掉apt进程,这种情况下,锁定文件未被删除,下次启动apt时,检查到相关目录下的锁定文件,会认为apt依然处于lock态。

解决办法

解铃还须系铃人,解决该问题,自然是清除掉lock限制,其步骤如下: 1.停止所有可能的apt进程,保证系统处于干净状态,以免受到影响

sudo killall apt apt-get 
  1. 删除锁定的lock文件 在系统var下的相应目录删除lock file,强制进行解锁操作:
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend 
sudo rm /var/cache/apt/archives/lock 
  1. 重新配置软件包:
sudo dpkg --configure -a
  1. 重新执行安装命令,发现安装过程已经正常: 在这里插入图片描述 接下来就可以继续进行安装工作了