Вопрос или проблема
Я пытаюсь установить apache2.4.23 на centos 6.8 и получаю это:
ab.c: В функции 'main':
ab.c:2398: предупреждение: неявное объявление функции 'SSLv2_client_method'
ab.c:2398: предупреждение: присваивание делает указатель из целого числа без приведения
ab.c:2412: предупреждение: 'TLSv1_1_client_method' устарел (объявлен в /usr/local/include/openssl/ssl.h:1604)
ab.c:2414: предупреждение: 'TLSv1_2_client_method' устарел (объявлен в /usr/local/include/openssl/ssl.h:1610)
ab.c:2417: предупреждение: 'TLSv1_client_method' устарел (объявлен в /usr/local/include/openssl/ssl.h:1598)
ab.c:2468: предупреждение: неявное объявление функции 'CRYPTO_malloc_init'
/usr/share/apr-1/build/libtool --silent --mode=link gcc -std=gnu99 -g -O2 -pthread -L/opt/httpd-2.4.25/lib -lssl -lcrypto -lrt -lcrypt -lpthread \
-o ab ab.lo /usr/lib64/libaprutil-1.la -ldb-4.7 -lexpat -ldb-4.7 /usr/lib/libapr-1.la -lrt -lcrypt -lpthread -lm
ab.o: В функции `main':
/opt/httpd-2.4.25/support/ab.c:2468: неопределенная ссылка на `CRYPTO_malloc_init'
/opt/httpd-2.4.25/support/ab.c:2398: неопределенная ссылка на `SSLv2_client_method'
collect2: ld вернул 1 статус выхода
make[2]: *** [ab] Ошибка 1
make[2]: выход из директории « /opt/httpd-2.4.25/support »
make[1]: *** [all-recursive] Ошибка 1
make[1]: выход из директории « /opt/httpd-2.4.25/support »
make: *** [all-recursive] Ошибка
Я попробовал установить openssl 1.1.0 и перегенерировать установку apache с помощью:
./configure --enable-layout=admin --enable-mpms-shared=all --with-ssl=/usr/local/bin/openssl
Все еще получаю ту же проблему, есть идеи?
После прочтения большого количества документации я обнаружил, что проблема была в версии openssl
, в моем случае я использовал openssl 1.1.x, так как когда httpd 2.4.23 был выпущен, openssl 1.1.0 все еще был бета-версией, я установил openssl 1.0.2j и скомпилировал apache с новым ssl:
./configure --with-apr=/usr/local/apr/bin --with-ssl=/usr/local/ssl/bin/
Ответ или решение
При установке Apache 2.4.23 на CentOS 6.8 многие пользователи сталкиваются с типичной проблемой, связанной с несовместимостью версий OpenSSL. Это может привести к множеству предупреждений и ошибок, как в приведенном вами примере. Рассмотрим, как можно решить эту проблему.
Проблема
При установке Apache версии 2.4.23 вы получаете следующие предупреждения и ошибки:
- Несоответствие между версиями OpenSSL и Apache;
- Использование устаревших методов, таких как
SSLv2_client_method
, что приводит к ошибкам компоновки, например,undefined reference to 'CRYPTO_malloc_init'
.
Причины
Основной причиной этих ошибок является то, что версия OpenSSL 1.1.x на момент выхода Apache 2.4.23 была еще в бета-версии. Apache 2.4.23 ожидает более раннюю версию OpenSSL, такую как 1.0.2, которая была стабильной. Таким образом, использование неподходящей версии OpenSSL непосредственно влияет на возможности компиляции Apache.
Решение
Решение данной проблемы состоит в установке OpenSSL 1.0.2, вместо 1.1.x, и правильной настройке параметров при конфигурации Apache. Вот шаги, которые вы можете предпринять:
-
Удалите установленную версию OpenSSL 1.1.x.
Убедитесь, что у вас нет конфликтующих версий OpenSSL, которые могут вызвать проблемы с компиляцией.sudo make uninstall
-
Скачайте и установите OpenSSL 1.0.2j.
Вы можете скачать OpenSSL с официального сайта или использовать командуwget
.wget https://www.openssl.org/source/openssl-1.0.2j.tar.gz tar -xvf openssl-1.0.2j.tar.gz cd openssl-1.0.2j ./config make sudo make install
-
Скомпилируйте Apache с использованием корректной версии OpenSSL.
Используйте правильные пути при конфигурации Apache:
./configure --with-apr=/usr/local/apr/bin --with-ssl=/usr/local/ssl/bin/ --enable-layout=admin --enable-mpms-shared=all
-
Завершите установку Apache.
После успешной конфигурации выполните компиляцию и установку:
make sudo make install
Заключение
В результате выполнения вышеописанных шагов вы сможете успешно установить Apache 2.4.23 на CentOS 6.8, избегая ошибок, связанных с несовместимостью версий OpenSSL. Эта задача требует тщательного выполнения каждой инструкции, чтобы гарантировать стабильную работу вашего веб-сервера. Важно следить за совместимостью между версиями программного обеспечения для предотвращения подобных ситуаций в будущем.