Установка Python3.10.10 + OpenSSL 1.1.1 в RHEL 7

Данный пост не претендует на полноту предоставленной информации.
Все действия выполняете на свой страх и риск.
Для понимания поста требуются минимальные знания в администрировании Linux.

Понадобилось мне недавно установить Python3 определенной версии на сервера с ОС RHEL 7. И вот вроде задача простая, но были несколько условий, а именно:

  • На контуре закрыт доступ в сеть Интернет

  • В локальном репозитории нет нужной версии

И еще были требования к минимальным номерам версий, Python должен быть не ниже 3.10.10 и исходя из этого появлялась еще необходимость обновить OpenSSL до версии 1.1.1. После прочтения нескольких статей родилась эта короткая инструкция.

Заходим на сервер, копируем архивы с Python и OpenSSL в папку /tmp и погнали. Начнём с установки OpenSSL версии 1.1.1n.

sudo -s

yum install nano wget yum-utils gcc openssl-devel bzip2-devel libffi-devel perl -y

cp /tmp/openssl-1.1.1n.tar.gz /usr/src

cd /usr/src

tar -xzf openssl-1.1.1n.tar.gz

cd openssl-1.1.1n

./config

make -j $(nproc)

make install

mkdir lib

cp *.{so,so.1.1,a,pc} ./lib

rm -f /usr/src/openssl-1.1.1n.tar.gz

echo 'export LD_LIBRARY_PATH=/usr/local/lib:/usr/local/lib64' >> /etc/profile.d/openssl.sh

source /etc/profile.d/openssl.sh

openssl version

Если последняя команда выведет номер версии отличный от 1.1.1, то выполняем следующее:

mv /usr/bin/openssl /usr/bin/openssl.backup.1.0.2k-fips

ln -s /usr/local/bin/openssl /usr/bin/openssl

С OpenSSL разобрались, теперь приступаем к установке Python версии 3.10.10.

cd /tmp

tar -xzf Python-3.10.10.tgz

cd Python-3.10.10

./configure --prefix=/opt/python310 --with-system-ffi --with-computed-gotos --enable-loadable-sqlite-extensions --with-openssl=/usr/src/openssl-1.1.1n

make -j $(nproc)

make altinstall

rm -f /tmp/Python-3.10.11.tgz

ln -s /opt/python310/bin/python3.10 /usr/bin/python3.10

python3.10 -m pip install pyopenssl

python3.10 -c "import ssl; print(ssl.OPENSSL_VERSION)"

На этом всё.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)