我正在尝试让WWW :: Mechanize使用https登录到Yahoo;但是,它需要使用Crypt :: SSLeay来通过https发送。
Crypt :: SSLeay成功安装,并且openssl已经安装在系统上。
但是,它在加载时给出错误:Can't load '/home/gen19/perl5/lib/perl5/lib/site_perl/5.10.1/i686-linux//auto/Crypt/SSLeay/SSLeay.so' for module Crypt::SSLeay: /home/gen19/perl5/lib/perl5/lib/site_perl/5.10.1/i686-linux//auto/Crypt/SSLeay/SSLeay.so: undefined symbol: PL_sv_undef at /usr/lib/perl5/5.8.0/i386-linux-thread-multi/DynaLoader.pm line 229. at /home/gen19/lwp4 line 15Compilation failed in require at /home/gen19/lwp4 line 15.BEGIN failed--compilation aborted at /home/gen19/lwp4 line 15.
Crypt :: SSLeay的安装成功,并且可以识别openssl的安装(此处):
perl Makefile.PL
=======================================================
Only one OpenSSL installation found at /usr
Consider running 'perl Makefile.PL --default' the next
time Crypt::SSLeay is upgraded to select this directory
automatically thereby avoiding the following prompt.
=======================================================
Which SSL install path do you want to use? [/usr] /home/gen19/ssldir
BUILD INFORMATION
================================================
ssl library: OpenSSL 0.9.8 in /home/gen19/ssldir
ssl header: openssl/ssl.h
libraries: -L/home/gen19/ssldir/lib -lssl -lcrypto -lgcc
include dir: -I/home/gen19/ssldir/include/openssl -I/usr/kerberos/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]
注意:由于LWP :: UserAgent的需要,最近使用App :: perlbrew安装了Perl v5.10.1。我使用新版本的Perl安装了Crypt :: SSLeay。
我没有root priveldiges,因为我在学校的远程服务器上执行此操作。请告诉我即使安装成功也会出现错误。我知道它与共享库有关,但是安装可以识别它们。
旁注:如果我不说“ use Crypt :: SSLeay;”,我的脚本就可以正常工作一开始,但是当我使用https时,它给出了错误消息,它不是受支持的协议,需要安装LWP :: protocol :: https。安装始终失败。
编辑:感谢您的帮助,CJM。显然,当我执行时,它使用的是Perl的旧版本,但现在我已修复了该问题。
它不再产生该错误。但是,它仍然说
Error GETing https://login.yahoo.com/config/login_verify2?&.src=ym: Protocol scheme 'https' is not supported (LWP::Protocol::https not installed) at lwp4 line 14
我以为Crypt :: SSLeay应该解决这个问题。
最佳答案
如果检查错误消息,您会发现它同时提到了5.10.1和5.8.0(在Perl库路径中)。这表明您正在尝试使用为一个版本的Perl和其他版本构建的模块。基于XS的Perl模块(即包含C代码的模块)在Perl的主要版本之间不是二进制兼容的。
似乎您使用Perl 5.10.1安装了Crypt :: SSLeay,并试图在5.8.0中使用它。那行不通。该安装仅使用Perl5.10.x。如果还需要在Perl 5.8.0中使用它,请在另一个目录中安装另一个副本。
关于perl - 为什么Perl模块Crypt::SSLeay加载时会出现错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6037768/