La gestión del host FreeBSD con Ansible falla: objeto compartido \"libdl.so.1\" no encontrado, requerido por \"python\"\r\n

La gestión del host FreeBSD con Ansible falla: objeto compartido \"libdl.so.1\" no encontrado, requerido por \"python\"\r\n

Gestión de FreeBSD en Raspberry pi 3 (FreeBSD-aarch64-12.0-GENERIC-320146M del proyecto RaspBSD -http://www.raspbsd.org/) falla.

El host de control es MacOS 10.13.2.

Python se instaló correctamente en el host administrado (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

Sin embargo, cuando intento ejecutar un libro de jugadas, ansible devuelve el siguiente error:

$ 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

La única dependencia de ansible es Python, que se satisface.

¿Qué está mal y cómo puedo solucionarlo?

Gracias.

Respuesta1

Un problema similar con la dependencia faltante en bash y wget se solucionó creando un enlace

ln -sf /lib/libc.so.7 /usr/lib/libdl.so.1

Respuesta2

Tuve un problema similar al hacer la transición de FreeBSD 11.1 a 11.2, pero fue gnutlsel que informó el problema de que faltaban archivos libdl.so.1.

Mi solución surgió de un consejo que encontré en:

https://forums.freenas.org/index.php?threads/openvpn-fails-in-jail-with-libdl-so-1-not-found-error.70391/#post-486449

Primero haga una copia de seguridad de /etc/pkg/FreeBSD.conf:

# cp -vp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.safety

Luego edite /etc/pkg/FreeBSD.confy cambie la url:línea para que sea:

url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_2",

Guarde el archivo y salga de vi.

# pkg update
# pkg install -f python27

Ahora prueba tu libro de jugadas ansible nuevamente.

Si eso funciona para usted y si ha actualizado otros puertos recientemente, es posible que desee invocarlos brevemente para asegurarse de que no tengan problemas similares.

No soy un experto, pero espero que este problema desaparezca una vez que actualice su sistema operativo a una versión más reciente. En mi caso, creo que el problema surgió porque el repositorio pkg proporcionaba paquetes vinculados para 11.2, que tiene libdl.so.1, y los estaba instalando en una cárcel que todavía estaba en la versión 11.1, que no la tiene.

Una vez que haya actualizado a una versión actualizada, debe volver /etc/pkg/FreeBSD.confa la copia de seguridad que realizó y reanudar el seguimiento del último repositorio de paquetes.

información relacionada