Меня просят перекомпилировать mo_ssl
с openssl 1.0.2 в SuseSE11SP3. Тем не менее, я новичок в Suse, но немного знаю Linux.
- ОС: Suse SE11SP3
- Openssl: 0.9.8j ‹ — поставляется с оригинальным Suse linux.
- Веб-сервер: Apache httpd 2.2.9
Вот ограничение у меня есть. Я не могу использовать zypper
или rpm
, потому что политика безопасности компании не позволяет мне это делать. Это абсурд, вот как это происходит здесь. Еще одно ограничение, которое у меня есть, заключается в том, что эта система используется другими веб-серверами, на которые у меня нет разрешения. Я должен сделать это как можно более локально.
Я хочу, чтобы это произошло, когда я перекомпилирую сервер Apache, мне нравится видеть, что mod_ssl
связан с более новой версией библиотеки Openssl.
Итак, я скачал исходный файл Openssl 1.0.2h:
./confgiure --prefix=//PREFIX/openssl --opendir=/PREFIX/openssl
make test
make install
Я успешно установил openssl в локальный каталог.
а затем я попытался перекомпилировать уже существующий httpd2.2.9. поэтому я перешел к исходному файлу в httpd 2.2.9
make clean
export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl"
export LIBS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/include/openssl"
./configure --prefix=/PREFIX/apache22 --enable-so --enable-ssl=ssl -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make install
Были некоторые ошибки, но я как бы разобрался и скомпилировал. Однако окончательный результат для mod_ssl
по-прежнему связан со старой версией Openssl 0.9.8, а не с более новой версией 1.0.2h.
Что я пропустил в этих шагах? Или где я ошибся?
//openssl install
./config -fPIC shared --prefix=/PREFIX/openssl --openssldir=/PREFIX/openssl
make
make test
make install
// install apache2
//recompiling after apache2 is installed with openssl
export LIBS=-ldl
export LD_LIBRARY_PATH="/PREFIX/openssl/lib"
export LDFLAGS="-L/PREFIX/openssl"
export CPPFLAGS="-I/PREFIX/openssl/include/openssl"
export CFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/openssl/include/openssl"
./configure --prefix=/PREFIX/apache22 --enable-so --enable-ssl=shared -with-ssl=/PREFIX/openssl --enable-module=shared CC=/usr/bin/gcc
make
make install
Приведенная выше команда создает mod_ssl.so в разделе «apache22/modules», но когда я сделал ldd mod_ssl.so, получилось следующее
linux-vdso.so.1 => (0x00007fffef8f2000)
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ffe6a48d000)
libc.so.6 => /lib64/libc.so.6 (0x00007ffe6a116000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffe6a913000)
libssl.so, libcrypto.so не связаны. Я не знаю, что еще я могу сделать здесь, чтобы связать mod_ssl.so с другой версией openssl.
пожалуйста, помогите мне.
LDFLAGS=-L/PREFIX/openssl
? - person alvits   schedule 11.10.2016export CPPFLAGS="-Wl,-rpath=/PREFIX/openssl:/usr/lib -I/PREFIX/include/openssl"
. - person alvits   schedule 12.10.2016CFLAGS
, а неCPPFLAGS
. - person alvits   schedule 12.10.2016--enable-ssl=ssl
на--enable-ssl=shared
. - person alvits   schedule 12.10.2016-Wl,-rpath
соответственно там, где находятся libssl.so и libcrypto.so. Я бы предложил создать файл/etc/ld.so.conf.d/*.conf
для вашего нового местоположения библиотеки, но это может конфликтовать с вашими существующими libcrypto и libssl. Так что настройка-Wl,-rpath
должна сделать это. - person alvits   schedule 12.10.2016/PREFIX/openssl/lib
. Используйтеexport CFLAGS="-Wl,-rpath=/PREFIX/openssl/lib:/usr/lib -I/PREFIX/openssl/include/openssl"
. - person alvits   schedule 12.10.2016