Gerenciamento do FreeBSD no Raspberry pi 3 (FreeBSD-aarch64-12.0-GENERIC-320146M do projeto RaspBSD -http://www.raspbsd.org/) falha.
O host de controle é MacOS 10.13.2.
python foi instalado com sucesso no host gerenciado (rpi3_freebsd):
$ ansible -m raw -a "sudo pkg install -y python27" --user drew --ask-pass rpi3_freebsd
SSH password:
rpi | SUCCESS | rc=0 >>
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
Checking integrity... done (0 conflicting)
The most recent version of packages are already installed
No entanto, quando tento executar um playbook, o ansible retorna o seguinte erro:
$ ansible-playbook --user drew --ask-pass bootstrap.yml -vvvv
ansible-playbook 2.4.3.0
config file = /Users/drew/SynologyDrive/rpi-scripts/ansible/ansible.cfg
configured module search path = [u'/Users/drew/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible
executable location = /usr/local/bin/ansible-playbook
python version = 2.7.10 (default, Jul 15 2017, 17:16:57) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
Using /Users/drew/SynologyDrive/rpi-scripts/ansible/ansible.cfg as config file
SSH password:
setting up inventory plugins
Parsed /Users/drew/SynologyDrive/rpi-scripts/ansible/hosts inventory source with ini plugin
Loading callback plugin skippy of type stdout, v2.0 from /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible/plugins/callback/skippy.pyc
PLAYBOOK: bootstrap.yml ******************************************************************************************************************
1 plays in bootstrap.yml
PLAY [raspberrypi_3] *********************************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************
Using module file /usr/local/Cellar/ansible/2.4.3.0/libexec/lib/python2.7/site-packages/ansible/modules/system/setup.py
<172.16.42.6> ESTABLISH CONNECTION FOR USER: drew on PORT 22 TO 172.16.42.6
<172.16.42.6> EXEC /bin/sh -c 'echo ~ && sleep 0'
<172.16.42.6> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058 `" && echo ansible-tmp-1522353818.07-1230475463058="` echo /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058 `" ) && sleep 0'
<172.16.42.6> PUT /var/folders/2c/m_z3y5gs3fz1m2b2lwzk7yl80000gn/T/tmpgWCvx_ TO /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py
<172.16.42.6> EXEC /bin/sh -c 'chmod u+x /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/ /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py && sleep 0'
<172.16.42.6> EXEC /bin/sh -c '/usr/local/bin/python /home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/setup.py; rm -rf "/home/drew/.ansible/tmp/ansible-tmp-1522353818.07-1230475463058/" > /dev/null 2>&1 && sleep 0'
fatal: [rpi]: FAILED! => {
"changed": false,
"module_stderr": "",
"module_stdout": "Shared object \"libdl.so.1\" not found, required by \"python\"\r\n",
"msg": "MODULE FAILURE",
"rc": 0
}
to retry, use: --limit @/Users/drew/SynologyDrive/rpi-scripts/ansible/bootstrap.retry
PLAY RECAP *******************************************************************************************************************************
rpi : ok=0 changed=0 unreachable=0 failed=1
A única dependência do ansible é o python que está satisfeito.
O que há de errado e como posso consertar?
Obrigado.
Responder1
Problema semelhante com dependência ausente no bash e wget foi corrigido com a criação de um link
ln -sf /lib/libc.so.7 /usr/lib/libdl.so.1
Responder2
Eu tive um problema semelhante ao fazer a transição do FreeBSD 11.1 para 11.2, mas foi gnutls
isso que relatou o problema com o arquivo libdl.so.1
.
Minha solução surgiu de uma dica que encontrei em:
Primeiro faça um backup de /etc/pkg/FreeBSD.conf
:
# cp -vp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.safety
Em seguida, edite /etc/pkg/FreeBSD.conf
e altere a url:
linha para:
url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_2",
Salve o arquivo e saia do vi.
# pkg update
# pkg install -f python27
Agora tente seu manual ansible novamente.
Se isso funcionar para você, e se você atualizou outras portas recentemente, você pode querer dar-lhes uma invocação superficial para garantir que não tenham problemas semelhantes.
Não sou um especialista, mas espero que esse problema desapareça assim que você atualizar seu sistema operacional para uma versão mais recente. No meu caso, acredito que o problema surgiu porque o repositório pkg estava fornecendo pacotes vinculados ao 11.2, que possui libdl.so.1, e eu os estava instalando em uma jail que ainda estava na versão 11.1, que não possui.
Depois de atualizar para uma versão atualizada, você deve reverter /etc/pkg/FreeBSD.conf
para a cópia de backup que fez e retomar o rastreamento do repositório do pacote mais recente.