3 votes

La gestion d'un hôte FreeBSD avec Ansible échoue : Objet partagé "libdl.so.1" non trouvé, requis par "Python". \r\n

Gestion de FreeBSD sur Raspberry pi 3 (FreeBSD-aarch64-12.0-GENERIC-320146M du projet RaspBSD - http://www.raspbsd.org/ ) échoue.

L'hôte de contrôle est MacOS 10.13.2.

Python est installé avec succès sur l'hôte géré ( 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

Cependant, lorsque j'essaie d'exécuter un playbook, ansible renvoie l'erreur suivante :

$ 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 seule dépendance pour ansible est Python qui est satisfait.

Quel est le problème et comment puis-je le résoudre ?

Merci.

5voto

Mr.Gosh Points 151

Un problème similaire avec une dépendance manquante dans bash et wget a été corrigé en créant un lien.

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

0voto

Jim L. Points 759

J'ai eu un problème similaire lors de la transition de FreeBSD 11.1 à 11.2, mais c'était gnutls qui a signalé le problème avec les manques libdl.so.1 .

Ma solution est née d'un conseil que j'ai trouvé sur le site :

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

Faites d'abord une sauvegarde de /etc/pkg/FreeBSD.conf :

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

Puis modifier /etc/pkg/FreeBSD.conf et changer le url: la ligne à être :

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

Enregistrez le fichier et quittez vi.

# pkg update
# pkg install -f python27

Maintenant essayez à nouveau votre playbook ansible.

Si cela fonctionne pour vous, et si vous avez mis à jour d'autres ports récemment, vous pouvez leur donner une invocation rapide pour vous assurer qu'ils n'ont pas de problèmes similaires.

Je ne suis pas un expert, mais je pense que ce problème disparaîtra dès que vous aurez mis votre système d'exploitation à une version plus récente. Dans mon cas, je pense que le problème est survenu parce que le repo pkg fournissait des paquets liés pour 11.2, qui a une libdl.so.1, et que je les installais dans un jail qui était encore à la version 11.1, qui n'en a pas.

Une fois que vous avez effectué la mise à jour vers une version plus récente, vous devez rétablir votre fichier /etc/pkg/FreeBSD.conf à la copie de sauvegarde que vous avez faite, et reprendre le suivi du dernier dépôt pkg.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X