作为我工作流程的一部分,我正在使用 Ubuntu 服务器 20.04.3。
因此我为虚拟机准备了映像并使用 Ansible 进行部署。
由于环境无法访问互联网,因此我安装的所有软件包均已通过执行简单的 shell 命令下载为 .deb:
dpkg -i deb_1.deb deb_2.deb deb_3.deb deb_4.deb
dpkg -i deb_5.deb deb_6.deb deb_7.deb deb_8.deb
有时约有 5% 的情况,我偶尔会收到此错误,可能会在第一次安装时发生
"stderr_lines": ["dpkg: error: dpkg frontend lock is locked by another process",
"E: Sub-process dpkg --set-selections returned an error code (2)", "E: Executing dpkg failed. Are you root?"]
我尝试通过以下方法解决这个问题:
- 项目清单
在每个安装步骤之前执行手动锁定文件删除
- /var/lib/dpkg/锁
- /var/lib/dpkg/lock-前端
- /var/cache/apt/archives/lock
但即使手动删除后,错误仍然出现。
尝试使用 Ansible apt 模块和“deb”参数安装软件包 - 但行为是一样的。
尝试使用“lsof”找出哪个进程实际上拥有锁文件,但文件不属于任何进程。
有没有什么办法可以修复这种奇怪且有缺陷的行为?
哪个进程有时负责在系统启动时创建锁文件?
答案1
答案就在消息中:
Executing dpkg failed. Are you root?
当改变系统拥有的位置时,您需要将其放在sudo
命令前面。