![Die Verwaltung des FreeBSD-Hosts mit Ansible schlägt fehl: Gemeinsam genutztes Objekt \"libdl.so.1\" nicht gefunden, wird aber von \"python\" benötigt\r\n](https://rvso.com/image/1557212/Die%20Verwaltung%20des%20FreeBSD-Hosts%20mit%20Ansible%20schl%C3%A4gt%20fehl%3A%20Gemeinsam%20genutztes%20Objekt%20%5C%22libdl.so.1%5C%22%20nicht%20gefunden%2C%20wird%20aber%20von%20%5C%22python%5C%22%20ben%C3%B6tigt%5Cr%5Cn.png)
Verwaltung von FreeBSD auf Raspberry pi 3 (FreeBSD-aarch64-12.0-GENERIC-320146M aus dem RaspBSD-Projekt -http://www.raspbsd.org/) schlägt fehl.
Der Steuerhost ist MacOS 10.13.2.
Python wurde erfolgreich auf dem verwalteten Host installiert (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
Wenn ich jedoch versuche, ein Playbook auszuführen, gibt Ansible den folgenden Fehler zurück:
$ 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
Die einzige Abhängigkeit für Ansible ist Python, die erfüllt ist.
Was ist falsch und wie kann ich es beheben?
Danke schön.
Antwort1
Ähnliches Problem mit fehlender Abhängigkeit in Bash und Wget wurde durch Erstellen eines Links behoben
ln -sf /lib/libc.so.7 /usr/lib/libdl.so.1
Antwort2
Bei mir ist beim Übergang von FreeBSD 11.1 auf 11.2 ein ähnliches Problem aufgetreten, aber gnutls
das Problem mit dem fehlenden wurde gemeldet libdl.so.1
.
Meine Lösung ergab sich aus einem Tipp, den ich hier gefunden habe:
Erstellen Sie zunächst eine Sicherungskopie von /etc/pkg/FreeBSD.conf
:
# cp -vp /etc/pkg/FreeBSD.conf /etc/pkg/FreeBSD.conf.safety
Bearbeiten /etc/pkg/FreeBSD.conf
und ändern Sie dann die url:
Zeile wie folgt:
url: "pkg+http://pkg.FreeBSD.org/${ABI}/release_2",
Speichern Sie die Datei und beenden Sie vi.
# pkg update
# pkg install -f python27
Versuchen Sie jetzt Ihr Ansible-Playbook erneut.
Wenn das für Sie funktioniert und Sie vor Kurzem andere Ports aktualisiert haben, möchten Sie diese möglicherweise kurz aufrufen, um sicherzustellen, dass bei ihnen keine ähnlichen Probleme auftreten.
Ich bin kein Experte, aber ich gehe davon aus, dass dieses Problem verschwindet, sobald Sie Ihr Betriebssystem auf eine neuere Version aktualisieren. In meinem Fall ist das Problem meiner Meinung nach entstanden, weil das pkg-Repo Pakete bereitstellte, die für 11.2 verknüpft waren, das eine libdl.so.1 hat, und ich sie in ein Jail installierte, das noch auf Version 11.1 war, was keine Version hat.
Nachdem Sie ein Upgrade auf eine aktuelle Version durchgeführt haben, sollten Sie /etc/pkg/FreeBSD.conf
zu der erstellten Sicherungskopie zurückkehren und die Nachverfolgung des neuesten PKG-Repos wieder aufnehmen.