使用 Ansible 管理 FreeBSD 主機失敗: 未找到「python」所需的共享物件「libdl.so.1」\r\n

使用 Ansible 管理 FreeBSD 主機失敗: 未找到「python」所需的共享物件「libdl.so.1」\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

但是,當我嘗試執行 playbook 時,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

從 FreeBSD 11.1 過渡到 11.2 時,我也遇到了類似的問題,但報告了gnutls缺少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 劇本。

如果這對您有效,並且您最近升級了其他端口,您可能需要粗略地調用它們以確保它們不會出現類似的問題。

我不是專家,但我希望一旦您將作業系統升級到更新版本,這個問題就會消失。就我而言,我相信問題的出現​​是因為 pkg 儲存庫提供了 11.2 的連結包,其中包含 libdl.so.1,而我將它們安裝到仍為 11.1 版本的監獄中,而該版本沒有。

升級到最新版本後,您應該恢復/etc/pkg/FreeBSD.conf到您製作的備份副本,並繼續追蹤最新的 pkg 儲存庫。

相關內容