Ansible을 사용한 FreeBSD 호스트 관리 실패: 공유 객체 \"libdl.so.1\"을 찾을 수 없음, \"python\"에 필요함\r\n

Ansible을 사용한 FreeBSD 호스트 관리 실패: 공유 객체 \"libdl.so.1\"을 찾을 수 없음, \"python\"에 필요함\r\n

Raspberry pi 3에서 FreeBSD 관리(RaspBSD 프로젝트의 FreeBSD-aarch64-12.0-GENERIC-320146M -http://www.raspbsd.org/) 실패합니다.

제어 호스트는 MacOS 10.13.2입니다.

Python이 관리 호스트에 성공적으로 설치되었습니다(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

그러나 플레이북을 실행하려고 하면 ansible이 다음 오류를 반환합니다.

$ 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

ansible에 대한 유일한 종속성은 만족되는 Python입니다.

무엇이 잘못되었으며 어떻게 해결할 수 있나요?

감사합니다.

답변1

bash 및 wget의 종속성 누락과 관련된 유사한 문제가 링크를 생성하여 해결되었습니다.

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

답변2

gnutlsFreeBSD 11.1에서 11.2로 전환할 때 비슷한 문제 가 발생했지만 libdl.so.1.

내 솔루션은 다음에서 찾은 팁에서 나왔습니다.

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

먼저 다음을 백업하십시오 /etc/pkg/FreeBSD.conf.

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

그런 다음 줄을 다음과 같이 편집 /etc/pkg/FreeBSD.conf하고 변경합니다 .url:

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

파일을 저장하고 vi를 종료합니다.

# pkg update
# pkg install -f python27

이제 Ansible 플레이북을 다시 시도해 보세요.

이것이 효과가 있고 최근에 다른 포트를 업그레이드한 경우 비슷한 문제가 없는지 확인하기 위해 대략적인 호출을 제공할 수 있습니다.

저는 전문가는 아니지만, OS를 최신 버전으로 업그레이드하면 이 문제가 사라질 것으로 예상합니다. 내 경우에는 pkg repo가 ​​libdl.so.1이 있는 11.2용으로 링크된 패키지를 제공하고 이를 아직 버전 11.1에 있던 감옥에 설치했기 때문에 문제가 발생했다고 생각합니다.

최신 릴리스로 업그레이드한 후에는 /etc/pkg/FreeBSD.conf만든 백업 복사본으로 되돌리고 최신 패키지 저장소 추적을 재개해야 합니다.

관련 정보