Проблемы с установкой криптографии в python 3.8.0 с пользовательским openssl - PullRequest
0 голосов
/ 06 ноября 2019

Я участвую в проекте по компиляции Python 3.8 и определенному набору библиотек, которые будут развернуты на смеси машин RHEL6 и RHEL7. Кроме того, из-за различий в RHEL6 и 7 (в первую очередь, в определенных библиотеках, найденных в / lib64), если я собирался скомпилировать это в блок RHEL7, моя установка на python не работает в блоке RHEL6, но работает наоборот. Итак, я сейчас пытаюсь скомпилировать этот материал на машине RHEL6, упаковать его и развернуть по всей плате.

Обратите внимание, что я собираю Python 3.8, а библиотеки - машины с воздушным зазором, поэтому я просто передаюисходник с другого компьютера на компьютер сборки.

Одной из первых проблем, с которыми я столкнулся, было то, что Python3.8 пожаловался на старую версию библиотек ssl, я решил эту проблему, используя шаги, описанные в ссылкениже

https://jameskiefer.com/posts/installing-python-3.7-on-debian-8

Здесь я сталкиваюсь с проблемой. Я использовал openssl, скомпилированный ранее для сборки Python 3.8, и использовал его для компиляции криптографии, обращая внимание на ссылку ниже.

https://cryptography.io/en/latest/installation/#static-wheels

Криптография устанавливается просто отлично, но онавсе еще продолжает указывать на родной libssl, а не на новый обновленный, который я скомпилировал.

В секции, где генерируется колесо, я включил режим отладки и заметил эти команды.

  running build_ext
  generating cffi module 'build/temp.linux-x86_64-3.8/_padding.c'
  creating build/temp.linux-x86_64-3.8
  generating cffi module 'build/temp.linux-x86_64-3.8/_constant_time.c'
  generating cffi module 'build/temp.linux-x86_64-3.8/_openssl.c'
  building '_openssl' extension
  creating build/temp.linux-x86_64-3.8/build
  creating build/temp.linux-x86_64-3.8/build/temp.linux-x86_64-3.8
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_openssl.c -o build/temp.linux-x86_64-3.8/build/temp.li
nux-x86_64-3.8/_openssl.o -Wconversion -Wno-error=sign-conversion

Похоже, что генерируемый _openssl.o просто использует родную ОСбиблиотеки, хотя я вижу, что мои переключатели правильно отображаются вскоре после.

  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_openssl.o -lssl -lcrypto -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_openssl.abi3.so
  building '_constant_time' extension
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_constant_time.c -o build/temp.linux-x86_64-3.8/build/t
emp.linux-x86_64-3.8/_constant_time.o
  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_constant_time.o -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_constant_time.abi3.so
  building '_padding' extension
  gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/apps/ops/python3/include/python3.8 -c build/temp.linux-x86_64-3.8/_padding.c -o build/temp.linux-x86_64-3.8/build/temp.li
nux-x86_64-3.8/_padding.o
  gcc -pthread -shared -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib -Wl,-rpath,/apps/ops/python3/openssl/lib build/temp.linux-x86_64-3.8/build/temp.linux
-x86_64-3.8/_padding.o -o build/lib.linux-x86_64-3.8/cryptography/hazmat/bindings/_padding.abi3.so

Пожалуйста, посмотрите на вывод ниже. Я в полной растерянности, чтобы понять это, или это просто невозможно, и мне нужно искать другое решение.

(env) [user1@devhost wheelhouse]$ python -c "from cryptography.hazmat.backends.openssl.backend import backend;print('Loaded: ' + backend.openssl_version_text());print('Linked Against: '
 + backend._ffi.string(backend._lib.OPENSSL_VERSION_TEXT).decode('ascii'))"
/home/user1/tmp/env/lib/python3.8/site-packages/cryptography/hazmat/bindings/openssl/binding.py:159: CryptographyDeprecationWarning: OpenSSL version 1.0.1 is no longer supported by the Open
SSL project, please upgrade. The next version of cryptography will drop support for it.
  warnings.warn(
Loaded: OpenSSL 1.0.1e-fips 11 Feb 2013
Linked Against: OpenSSL 1.0.1e 11 Feb 2013

(env) [user1@devhost wheels]$ python -c 'import ssl; print (ssl.OPENSSL_VERSION)'
OpenSSL 1.0.2t  10 Sep 2019
...