开启掘金成长之旅!这是我参与「掘金日新计划 · 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
- 删除锁定的lock文件 在系统var下的相应目录删除lock file,强制进行解锁操作:
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
- 重新配置软件包:
sudo dpkg --configure -a
- 重新执行安装命令,发现安装过程已经正常:
接下来就可以继续进行安装工作了