web-dev-qa-db-ja.com

Ansibleを使用したFreeBSDホストの管理に失敗しました:共有オブジェクト「libdl.so.1」が見つかりません。「python」が必要です\ r \ n

Raspberry Pi 3上のFreeBSDの管理(RaspBSDプロジェクトのFreeBSD-aarch64-12.0-GENERIC-320146M- http://www.raspbsd.org/ )は失敗します。

コントロールホストはMacOS10.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ですが、これは満たされています。

何が問題で、どうすれば修正できますか?

ありがとうございました。

3
Drew

リンクを作成することで、bashとwgetに依存関係がないという同様の問題が修正されました

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

FreeBSD 11.1から11.2に移行するときに同様の問題が発生しましたが、libdl.so.1がないという問題を報告したのはgnutlsでした。

私の解決策は、私が見つけたヒントから生まれました:

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

次に、AnsiblePlaybookをもう一度試してください。

それが機能する場合、および最近他のポートをアップグレードした場合は、同様の問題が発生しないように、大まかな呼び出しを行うことをお勧めします。

私は専門家ではありませんが、OSを最新バージョンにすると、この問題は解消されると思います。私の場合、この問題は、pkgリポジトリがlibdl.so.1を持つ11.2にリンクされたパッケージを提供していて、バージョン11.1がまだないjailにそれらをインストールしていたために発生したと思います。

最新のリリースにアップグレードしたら、/etc/pkg/FreeBSD.confを作成したバックアップコピーに戻し、最新のpkgリポジトリの追跡を再開する必要があります。

0
Jim L.