Понадобилось узнать, почему FreeIPA выдавала ошибку загрузки библиотеки, не выдавая подробный текст ошибки. Этот способ позволяет выполнять dlopen() библиотек и смотреть, успешно ли прошла операция, и видеть ошибки.
Используется Python CFFI.
[root@rosa-ipa3 ~]# python Python 2.7.15 (default, Jun 6 2019, 05:12:57) [GCC 5.5.0 20171010 (ROSA)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from cffi import FFI >>> ffi = FFI() >>> ffi.dlopen("/usr/lib64/softhsm/libsofthsm2.so") <cffi.api.FFILibrary_/usr/lib64/softhsm/libsofthsm2.so object at 0x7ff7b5ae7650> >>>
Выше пример успешного dlopen библиотеки. А вот пример с ошибкой:
>>> ffi.dlopen("/usr/lib64/softhsm/libsofthsm2.so") Traceback (most recent call last): File "", line 1, in File "/usr/lib64/python2.7/site-packages/cffi/api.py", line 141, in dlopen lib, function_cache = _make_ffi_library(self, name, flags) File "/usr/lib64/python2.7/site-packages/cffi/api.py", line 795, in _make_ffi_library backendlib = _load_backend_lib(backend, libname, flags) File "/usr/lib64/python2.7/site-packages/cffi/api.py", line 790, in _load_backend_lib raise OSError(msg) OSError: cannot load library /usr/lib64/softhsm/libsofthsm2.so: /usr/lib64/softhsm/libsofthsm2.so: undefined symbol: EC_KEY_free. Additionally, ctypes.util.find_library() did not manage to locate a library called '/usr/lib64/softhsm/libsofthsm2.so'
Эту ошибку устранил принудительной линковкой с libcrypto (это часть OpenSSL).
Отправить ответ