dpkg 与 ansible 的奇怪行为

dpkg 与 ansible 的奇怪行为

作为我工作流程的一部分,我正在使用 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?"]

我尝试通过以下方法解决这个问题:

  1. 项目清单

在每个安装步骤之前执行手动锁定文件删除

  • /var/lib/dpkg/锁
  • /var/lib/dpkg/lock-前端
  • /var/cache/apt/archives/lock

但即使手动删除后,错误仍然出现。

  1. 尝试使用 Ansible apt 模块和“deb”参数安装软件包 - 但行为是一样的。

  2. 尝试使用“lsof”找出哪个进程实际上拥有锁文件,但文件不属于任何进程。

有没有什么办法可以修复这种奇怪且有缺陷的行为?

哪个进程有时负责在系统启动时创建锁文件?

答案1

答案就在消息中:

Executing dpkg failed. Are you root?

当改变系统拥有的位置时,您需要将其放在sudo命令前面。

相关内容