Ошибка при установке Crypt :: SSLeay на Linux - PullRequest
1 голос
/ 05 октября 2011

Итак, я пытаюсь установить Apache с SSL, поэтому Apache Openssl и SSLeay. Я закончил с Apache2, и Openssl знает, что у меня проблемы с установкой SSLeay. Я получаю до perl Makefile.PL после этого все команды терпят неудачу.

perl Makefile.PL    
Found multiple possibilities for OpenSSL
      /opt/ssl (OpenSSL 0.9.8r)
      /usr (OpenSSL 0.9.8p)
    Which SSL install path do you want to use? [/opt/ssl]

build information

================================================

ssl library: OpenSSL 0.9.8r in /opt/ssl
ssl header:  openssl/ssl.h
libraries:   -L/opt/ssl/lib -lssl -lcrypto -lgcc
include dir: -I/opt/ssl/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]

Я выбрал установку / usr, потому что именно на ней я установил openssl-devel, так как я посмотрел на этот вопрос, то есть simmilar и обнаружил, что openssl-devel необходим. Поэтому я установил openssl-devel

rpm -qi openssl
Name        : openssl                      Relocations: (not relocatable)
Version     : 0.9.8a                            Vendor: SUSE LINUX Products GmbH, Nuernberg, Germany
Release     : 18.36                         Build Date: Mon 27 Jul 2009 03:55:03 PM CEST
Install Date: Mon 18 Jan 2010 10:42:42 AM CET      Build Host: deacon.suse.de
Group       : Productivity/Networking/Security   Source RPM: openssl-0.9.8a-18.36.src.rpm
Size        : 2998754                          License: BSD 3-Clause
Signature   : DSA/SHA1, Mon 27 Jul 2009 03:57:14 PM CEST, Key ID a84edae89c800aca
Packager    : http://bugs.opensuse.org
URL         : http://www.openssl.org/
Summary     : Secure Sockets and Transport Layer Security


rpm -qi openssl-devel
Name        : openssl-devel                Relocations: (not relocatable)
Version     : 0.9.8p                            Vendor: PLD
Release     : 1                             Build Date: Fri 19 Nov 2010 12:24:41 PM CET

Install Date: Wed 05 Oct 2011 03:47:56 PM CEST      Build Host: x86-64.titanium.pld-linux.org
Group       : Development/Libraries         Source RPM: openssl-0.9.8p-1.src.rpm
Size        : 2003899                          License: Apache-like
Signature   : (none)
Packager    : PLD
URL         : http://www.openssl.org/
Summary     : Development part of OpenSSL Toolkit libraries
Description :<br/>
Development part of OpenSSL library.
Distribution: PLD Titanium

Но знайте, что я все еще получаю следующую ошибку при запуске make

make
cc -c  -I/opt/ssl/include -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe -Wdeclaration-after-statement -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fmessage-length=0 -Wall -D_FORTIFY_SOURCE=2 -g -Wall -pipe   -DVERSION=\"0.58\" -DXS_VERSION=\"0.58\" -fPIC "-I/usr/lib/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
cc  -shared -L/usr/local/lib64 SSLeay.o  -o blib/arch/auto/Crypt/SSLeay/SSLeay.so       \
   -L/opt/ssl/lib -lssl -lcrypto        

/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld: /opt/ssl/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
/opt/ssl/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

Я думаю, что причина в том, что Perl не находит библиотеку openssl-devel, если да, то как мне связать ее, чтобы ее можно было найти.

Заранее спасибо Всемогущий Боб

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

Почему бы не использовать версию, предварительно подготовленную для вашего дистрибутива?

$ sudo yum install perl-Crypt-SSLeay

(или некоторый близкий эквивалент)

0 голосов
/ 08 октября 2011

Вы запутались в части программного обеспечения.

В openSUSE и связанных дистрибутивах просто sudo zypper install apache2. Apache httpd v2 уже включает в себя привязку к OpenSSL с именем mod_ssl; эта команда автоматически установит все необходимые зависимости для подачи контента по SSL, включая библиотеку OpenSSL. Не нужно ничего компилировать.

SSLeay является частью стека Perl HTTP client . Это удобно для доступа к чужому контенту на удаленном сервере через SSL. Это противоположно тому, что вы хотите, но если вы все равно хотите, сначала добавьте репозиторий devel:language:perl, затем установите пакет perl-LWP-Protocol-https. Опять же, это автоматически вытянет необходимые зависимости, включая perl-Net-SSLeay.

Чтобы добавить Perl, который обычно используется вместе с вашим веб-сервером Apache, добавьте репозиторий Apache:Modules, затем также установите пакеты apache2-mod_apreq2, apache2-mod_perl, libapreq2, perl-Apache2-Request.

0 голосов
/ 05 октября 2011

Если не удается найти библиотеку, вы обычно получаете ошибку undefined symbol.Это больше похоже на то, что оно нашло библиотеку, но не понравилось.Возможно, вы пытаетесь использовать 32-битный openssl с 64-битным Perl или наоборот?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...