Понадобилась данная версия на одном из проектов. В репозиториях под 24.04 ubuntu ее нет. Что ж, соберем руками и сделаем .deb пакет.
Установка нужных зависимостей:
sudo apt update
sudo apt install zlib1g-dev build-essential checkinstall fakeroot dpkg-dev devscripts wget vim
Скачиваем нужную версию openssl:
wget https://www.openssl.org/source/openssl-3.3.1.tar.gz
tar -xzf openssl-3.3.1.tar.gz
cd openssl-3.3.1
Конфигурим и собираем. Ставить будем в отдельную директорию, иначе проблемы с системными зависимостями замучают:
./config --prefix=/opt/openssl-3.3.1 \
--openssldir=/opt/openssl-3.3.1/ssl \
shared zlib
make
Установка во временный каталог для создания пакета:
mkdir -p ../openssl-package/DEBIAN
make DESTDIR=$(pwd)/../openssl-package install_sw
DESTDIR указывает на временный каталог, куда будут установлены файлы для последующей упаковки.
Создадим файл для управления пакетов в ../openssl-package/DEBIAN/control со следующим содержимом:
Package: openssl
Version: 3.3.1-1
Section: utils
Priority: optional
Architecture: amd64
Maintainer: Ваше Имя <you@example.com>
Description: OpenSSL 3.3.1 custom build installed in /opt
OpenSSL is a robust, commercial-grade, full-featured Open Source Toolkit for the TLS and SSL protocols.
Собираем пакет:
cd ..
dpkg-deb --build openssl-package openssl_3.3.1-1_amd64.deb
Устанавливаем собранный пакет:
dpkg -i openssl_3.3.1-1_amd64.deb
Так как ставили мы все по не стандартным путям, нужно указать это системе:
echo 'export PATH=/opt/openssl-3.3.1/bin:$PATH' | tee /etc/profile.d/openssl.sh
echo '/opt/openssl-3.3.1/lib64' | tee /etc/ld.so.conf.d/openssl.conf
ldconfig
echo 'export PKG_CONFIG_PATH=/opt/openssl-3.3.1/lib64/pkgconfig:$PKG_CONFIG_PATH' | tee -a /etc/profile.d/openssl.sh
source /etc/profile.d/openssl.sh
Проверяем:
root@86f5719b0a02:/# which openssl
/opt/openssl-3.3.1/bin/openssl
root@86f5719b0a02:/# openssl version
OpenSSL 3.3.1 4 Jun 2024 (Library: OpenSSL 3.3.1 4 Jun 2024)
Если пакет потом планируется ставить при сборке какого-либо контейнера, то в Dockerfile лучше сделать вот так для настройке путей:
ENV PATH="/opt/openssl-3.3.1/bin:${PATH}"
ENV LD_LIBRARY_PATH="/opt/openssl-3.3.1/lib64:${LD_LIBRARY_PATH}"
ENV PKG_CONFIG_PATH="/opt/openssl-3.3.1/lib64/pkgconfig:${PKG_CONFIG_PATH}"
RUN echo "/opt/openssl-3.3.1/lib64" > /etc/ld.so.conf.d/openssl.conf && \
ldconfig#linux