Вопрос или проблема
После нескольких сессий интенсивного поиска в Google и попыток различных подходов с ChatGPT, я, похоже, зашёл в тупик. Моя проблема возникает, когда я пытаюсь собрать OpenSSL из исходников: кажется, что процесс сборки хочет связаться с libcrypto.so, находящимся в /lib, но версия OpenSSL, поставляемая системой, устарела, поэтому это заканчивается неудачей, так как OpenSSL теперь включает функциональность, отсутствующую в моей версии libcrypto.so, в частности, QUIC, и сбой происходит на safe_muldiv_uint64_t. Это похоже на ловушку, и я абсолютно не знаю, как из этого выкарабкаться.
Некоторые из предложений, которые я нашёл, включали сборку OpenSSL в chroot-окружении, но мне кажется, это немного чрезмерно?
Итак, мой вопрос: как собрать OpenSSL, не связывая с /lib/libcrypto.so, а используя версию libcrypto из пакетного исходника?
Ответ или решение
Чтобы собрать OpenSSL из исходников, не полагаясь на системную библиотеку /lib/libcrypto.so
, необходимо выполнить несколько шагов, которые помогут избежать зависимости от устаревшей версии библиотеки. Ниже приведены последовательные инструкции для успешной сборки OpenSSL:
1. Установка необходимых зависимостей
Прежде всего, убедитесь, что у вас установлены все необходимые пакеты для сборки. Используйте менеджер пакетов вашей операционной системы, чтобы установить следующие зависимости:
sudo apt-get install build-essential checkinstall
sudo apt-get install perl wget
2. Скачивание исходников OpenSSL
Скачайте последнюю версию исходного кода OpenSSL с официального сайта:
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar -xzf openssl-1.1.1k.tar.gz
cd openssl-1.1.1k
3. Конфигурация сборки
Перед конфигурацией сборки OpenSSL нужно задать варианты --prefix
и --openssldir
, чтобы они указывали на пользовательский каталог, где будут установлены библиотека и заголовочные файлы OpenSSL. Убедитесь, что при этом не будет путей, ссылающихся на системные библиотеки.
Запустите следующую команду:
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
Если у вас будет необходимость исключить определенные флаги компиляции, вы можете использовать параметры конфигурации.
4. Сборка и установка
Запустите сборку и установку OpenSSL, чтобы создать библиотеки без зависимости от системных версий:
make
sudo make install
5. Обновление переменных окружения
Чтобы система использовала новые библиотеки, необходимо обновить переменные окружения. Для этого добавьте следующие строки в файл ~/.bashrc
или ~/.bash_profile
:
export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH
export PATH=/usr/local/openssl/bin:$PATH
Примените изменения:
source ~/.bashrc
6. Проверка установки
Для проверки правильности установки выполните:
openssl version
Вы должны увидеть версию OpenSSL, которую вы только что собрали, без зависимости от устаревшей libcrypto.so
.
Заключение
Следуя этим шагам, вы сможете собрать OpenSSL из исходников, безопасно игнорируя устаревшие библиотеки на вашей системе. Если на пути возникнут ошибки, пожалуйста, убедитесь, что все зависимости установлены, и проверьте вывод на предмет других возможных проблем.