Якщо ви невдало поесперементували з mediator’ом openssl і отримали щось, на зразок такого:
root@old:~# bootadm list-menu
Traceback (most recent call last):
File "/usr/lib/python3.7/vendor-packages/bootadm-helper.py", line 29, in
from bemgmt import BEManager
File "/usr/lib/python3.7/vendor-packages/bemgmt/__init__.py", line 45, in
from bemgmt.be import USERPROP_ZONE_PARENTBE, ALLOWED_POLICIES, \
File "/usr/lib/python3.7/vendor-packages/bemgmt/be.py", line 22, in
from bemgmt.utils import get_be_pool_and_name, get_mountpoint_from_vfstab, \
File "/usr/lib/python3.7/vendor-packages/bemgmt/utils.py", line 20, in
from bemgmt.zfs_rad import ZfsRad
File "/usr/lib/python3.7/vendor-packages/bemgmt/zfs_rad.py", line 17, in
import rad.connect as radcon
File "/usr/lib/python3.7/vendor-packages/rad/connect.py", line 21, in
import ssl
File "/usr/lib/python3.7/ssl.py", line 98, in
import _ssl # if we can't import it, let the error propagate
ImportError: ld.so.1: bootadm: relocation error: file /usr/lib/python3.7/lib-dynload/_ssl.cpython-37m.so: symbol GENERAL_NAME_free: referenced symbol not found
bootadm: Unable to load python helper module
де взагалі нічого не працює, навіть, pkg, то це дуже погано (КО). Вирішити це достатньо просто: в кінці виводу є скарга на бібліотеку /usr/lib/python3.7/lib-dynload/_ssl.cpython-37m.so. Подивимося її залежність:
oot@old:~# ldd /usr/lib/python3.7/lib-dynload/_ssl.cpython-37m.so
libssl.so.1.0.0 => (file not found)
libcrypto.so.1.0.0 => (file not found)
libpython3.7m.so.1.0 => /usr/lib/64/libpython3.7m.so.1.0
libc.so.1 => /lib/64/libc.so.1
libm.so.2 => /lib/64/libm.so.2
Бачимо, що кудись ділись libssl, libcrypto. Порівняємо з видачею з робочого серверу:
root@work-server# ldd /usr/lib/python3.7/lib-dynload/_ssl.cpython-37m.so
libssl.so.1.0.0 => /lib/64/libssl.so.1.0.0
libcrypto.so.1.0.0 => /lib/64/libcrypto.so.1.0.0
libpython3.7m.so.1.0 => /usr/lib/64/libpython3.7m.so.1.0
libc.so.1 => /lib/64/libc.so.1
libm.so.2 => /lib/64/libm.so.2
Виправляємо цю ситуацію і перевіряємо роботу:
root@old:~# cd /lib/64/
root@old:/lib/64# ln -s ../openssl/default/amd64/libssl.so.1.0.0
root@old:/lib/64# ln -s ../openssl/default/amd64/libcrypto.so.1.0.0
root@old:/lib/64# ldd /usr/lib/python3.7/lib-dynload/_ssl.cpython-37m.so
libssl.so.1.0.0 => /lib/64/libssl.so.1.0.0
libcrypto.so.1.0.0 => /lib/64/libcrypto.so.1.0.0
libpython3.7m.so.1.0 => /usr/lib/64/libpython3.7m.so.1.0
libc.so.1 => /lib/64/libc.so.1
libm.so.2 => /lib/64/libm.so.2
root@old:/lib/64# # bootadm list-menu
The location of the boot loader configuration files is: /rpool/boot/grub
default 0
console text
timeout 10
0 11.4.37.101.1