[Solaris] Зламаний openssl зламав систему.

Якщо ви невдало поесперементували з 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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься.