Невозможно установить модуль Crypt-SSLeay - PullRequest
1 голос
/ 09 марта 2011

Я создаю веб-приложение, которое требует использования модуля perl Crypt-SSLeay.Этот модуль зависит от необходимости заголовков OpenSSL.Так как на моем сервере Linux нет ни одного, я прошел эти шаги для установки, но я получаю ошибку, которую трудно понять (см. Ниже) из-за моего ограниченного опыта.

Информация о сервере: Запуск Oracle Enterprise Linux
Версия Linux 2.6.18-194.11.4.0.1.el5 (mockbuild@ca-build9.us.oracle.com) (версия gcc 4.1.2 20080704 (Red Hat 4.1.2-48))

Действия по репликации проблемы:
Скачал и распаковал openssl 0.9.8r из здесь и выполнил следующие команды (после перехода в каталог)

./config --openssldir=/usr/local/openssl
make
make test
sudo make install

Скачал и распаковал Crypt-SSLeay модуль из здесь и затем выполнил следующие команды (после перехода в каталог)

 perl Makefile.PL
 make

Я получаю следующую ошибку после запуска "make":

BUILD INFORMATION
================================================
ssl library: OpenSSL 0.9.8r in /usr/local/openssl
ssl header:  openssl/ssl.h
libraries:   -L/usr/local/openssl/lib -lssl -lcrypto -lgcc
include dir: -I/usr/local/openssl/include
================================================
Note (probably harmless): No library found for -lgcc
Writing Makefile for Crypt::SSLeay
The test suite can attempt to connect to public servers
to ensure that the code is working properly. If you are
behind a strict firewall or have no network connectivity,
these tests may fail (through no fault of the code).
Do you want to run the live tests (y/N)? [N] 
-bash-3.2$ make
gcc -c  -I/usr/local/openssl/include -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic   -DVERSION=\"0.58\" -DXS_VERSION=\"0.58\" -fPIC "-I/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE"   SSLeay.c
SSLeay.c: In function ‘XS_Crypt__SSLeay__CTX_new’:
SSLeay.c:118: warning: unused variable ‘packname’
SSLeay.c: In function ‘XS_Crypt__SSLeay__Conn_new’:
SSLeay.c:395: warning: unused variable ‘packname’
SSLeay.c: In function ‘XS_Crypt__SSLeay__CTX_use_pkcs12_file’:
SSLeay.c:287: warning: ‘RETVAL’ may be used uninitialized in this function
Running Mkbootstrap for Crypt::SSLeay ()
chmod 644 SSLeay.bs
rm -f blib/arch/auto/Crypt/SSLeay/SSLeay.so
gcc  -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic SSLeay.o  -o blib/arch/auto/Crypt/SSLeay/SSLeay.so     \
       -L/usr/local/openssl/lib -lssl -lcrypto      \

/usr/bin/ld: /usr/local/openssl/lib/libssl.a(s2_clnt.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/openssl/lib/libssl.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [blib/arch/auto/Crypt/SSLeay/SSLeay.so] Error 1

Я не уверен, что мне нужно делать, когда я перекомпилирую OpenSSL, чтобы этот модуль заработал.Любая помощь приветствуется.

1 Ответ

2 голосов
/ 09 марта 2011

Это похоже на ошибку в самой сборке OpenSSL. Вы уверены, что в вашем дистрибутиве нет заголовков OpenSSL? (И я уверен, что у вас уже были библиотеки, верно?)

Заголовки находятся в пакете под названием "openssl-devel" на RedHat IIRC, должны быть одинаковыми для Oracle Enterprise Linux (я полагаю, никогда не использовал это).

Если вы найдете заголовки в пакетах вашего дистрибутива, не забудьте удалить пользовательскую сборку (удалите файлы вручную, если в файле OpenSSL Makefile нет цели удаления).

...