我遇到了Failed to lock apt for exclusive operation
问题:
https://github.com/geerlingguy/ansible-role-apache/issues/50
我在GitHub上发布了很多细节。
我搜索了很多“无法锁定专属操作”的Ansible投诉,但没有简单的答案。有帮助吗?答案 0 :(得分:16)
我在设置几个新盒子时也遇到了这个错误。我以[{1}}身份连接,所以我认为没有必要,但它是:
root
现在一切正常。
答案 1 :(得分:3)
就我而言,ansible 试图锁定不存在的 /var/lib/apt/lists/
。
ansible 给我的错误是 Failed to lock apt for exclusive operation: Failed to lock directory /var/lib/apt/lists/: E:Could not open lock file /var/lib/apt/lists/lock - open (2: No such file or directory)
添加列表目录修复了问题:
- name: packages | ensure apt list dir exists
file:
path: /var/lib/apt/lists/
state: directory
mode: 0755
答案 2 :(得分:2)
以下面相同的顺序运行以下命令可以解决此问题:
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get clean
sudo apt-get update
答案 3 :(得分:2)
我知道很久以前这个问题已得到解答,但对我而言,解决方案却有所不同。 问题是update_cache步骤。我在每个安装步骤都有这个,并且以某种方式导致了" apt失败的锁定错误"。 解决方案是将update_cache添加为单独的步骤,如下所示:
答案 4 :(得分:1)
在我的主机文件中,我有一些主机将sudo
使用的用户与Ansible所使用的SSH用户不同,因此我为主机中的每个主机指定了ansible_user
和ansible_become_user
库存。
在那些ansible_user
== ansible_become_user
的主机上,我得到了Failed to lock apt for exclusive operation
。
对我来说,解决方案是在用户两个参数相同的情况下删除ansible_become_user
行。
答案 5 :(得分:0)
我在剧本中有remote_user: root
,而且这种情况经常发生。我不知道为什么,它仅在某些角色上发生,而在其他角色上却没有(但总是在同一位置。)我删除了remote_user: root
并停止了。我只使用--become
和--become-user=root
。 (我使用的是哪个,但由于某种原因它仍然随机未能获得锁。)
答案 6 :(得分:0)
https://serverfault.com/questions/716260/ansible-sudo-error-while-building-on-atlas
检查
ps aux | grep apt
输出中是否存在可疑进程。
答案 7 :(得分:0)
将update_cache
从“ yes
”更改为“ no
”:
update_cache: no
答案 8 :(得分:0)
我在使用 ansible 设置 ceph 集群时遇到了同样的错误。仅在没有 sudo 的情况下运行 ansible-playbook 就对我有用!
答案 9 :(得分:-1)
好的,所以Ansible,SSH或角色没有任何问题。只是Debian中的apt可能会变得非常困惑并将其锁定。当我使用自制的Docker VM时,我只需要重新创建我的图像和容器以使APT再次工作。