Centos 7 - perl:无法通过 cpan 安装 Crypt::OpenSSL::EC

Centos 7 - perl:无法通过 cpan 安装 Crypt::OpenSSL::EC

尝试使用 cpan 安装 Crypt::OpenSSL::EC 会出现以下结果:

$ cpan install Crypt::OpenSSL::EC
Reading '/home/vafbuild/.cpan/Metadata'
  Database was generated on Mon, 05 Dec 2016 10:41:02 GMT
Running install for module 'Crypt::OpenSSL::EC'
Running make for M/MI/MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz
length() used on @array (did you mean "scalar(@array)"?) at /usr/lib64/perl5/IO/Compress/Zlib/Extra.pm line 198.
Checksum for /home/vafbuild/.cpan/sources/authors/id/M/MI/MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz ok

  CPAN.pm: Building M/MI/MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz

Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for Crypt::OpenSSL::EC
Writing MYMETA.yml and MYMETA.json
cp lib/Crypt/OpenSSL/EC.pm blib/lib/Crypt/OpenSSL/EC.pm
AutoSplitting blib/lib/Crypt/OpenSSL/EC.pm (blib/lib/auto/Crypt/OpenSSL/EC)
Running Mkbootstrap for EC ()
chmod 644 "EC.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- EC.bs blib/arch/auto/Crypt/OpenSSL/EC/EC.bs 644
"/usr/bin/perl" "/usr/share/perl5/vendor_perl/ExtUtils/xsubpp"  -typemap '/usr/share/perl5/ExtUtils/typemap' -typemap '/home/vafbuild/.cpan/build/Crypt-OpenSSL-EC-1.01-Vi3UNF/typemap'  EC.xs > EC.xsc
mv EC.xsc EC.c
gcc -c  -I. -I/usr/include -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic   -DVERSION=\"1.01\" -DXS_VERSION=\"1.01\" -fPIC "-I/usr/lib64/perl5/CORE"  -DPERL5 -DOPENSSL_NO_KRB5 EC.c
In file included from /usr/lib64/perl5/CORE/perl.h:5071:0,
                 from EC.xs:2:
EC.c: In function ‘XS_Crypt__OpenSSL__EC_constant’:
/usr/lib64/perl5/CORE/embed.h:609:37: warning: ‘iv’ may be used uninitialized in this function [-Wmaybe-uninitialized]
 #define sv_setiv(a,b)  Perl_sv_setiv(aTHX_ a,b)
                                     ^
./const-xs.inc:11:6: note: ‘iv’ was declared here
  IV  iv;
      ^
rm -f blib/arch/auto/Crypt/OpenSSL/EC/EC.so
LD_RUN_PATH="/lib64" gcc  -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -Wl,-z,relro  EC.o  -o blib/arch/auto/Crypt/OpenSSL/EC/EC.so  \
   -L/usr/lib -lcrypto   \

chmod 755 blib/arch/auto/Crypt/OpenSSL/EC/EC.so
Manifying 1 pod document
  MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz
  /usr/bin/make -- OK
Running make test
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- EC.bs blib/arch/auto/Crypt/OpenSSL/EC/EC.bs 644
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/Crypt-OpenSSL-EC.t .. ok     
t/prime-field.t ....... 1/263 
#   Failed test at t/prime-field.t line 36.

#   Failed test at t/prime-field.t line 43.
Use of uninitialized value $msg in concatenation (.) or string at /home/vafbuild/.cpan/build/Crypt-OpenSSL-EC-1.01-Vi3UNF/blib/lib/Crypt/OpenSSL/EC.pm line 413.
 17078: 1 - error:100A6083:elliptic curve routines:ec_GFp_simple_group_set_curve:unsupported field
Use of uninitialized value $msg in concatenation (.) or string at /home/vafbuild/.cpan/build/Crypt-OpenSSL-EC-1.01-Vi3UNF/blib/lib/Crypt/OpenSSL/EC.pm line 413.
 17078: 2 - error:1008506F:elliptic curve routines:ec_GFp_mont_field_decode:not initialized

#   Failed test at t/prime-field.t line 70.

#   Failed test at t/prime-field.t line 103.

#   Failed test at t/prime-field.t line 110.

#   Failed test at t/prime-field.t line 117.

#   Failed test at t/prime-field.t line 119.

#   Failed test at t/prime-field.t line 126.

#   Failed test at t/prime-field.t line 131.

#   Failed test at t/prime-field.t line 137.

#   Failed test at t/prime-field.t line 144.

#   Failed test at t/prime-field.t line 320.

#   Failed test at t/prime-field.t line 323.

#   Failed test at t/prime-field.t line 324.

#   Failed test at t/prime-field.t line 329.

#   Failed test at t/prime-field.t line 335.

#   Failed test at t/prime-field.t line 340.

#   Failed test at t/prime-field.t line 157.

#   Failed test at t/prime-field.t line 160.

#   Failed test at t/prime-field.t line 165.

#   Failed test at t/prime-field.t line 167.

#   Failed test at t/prime-field.t line 168.

#   Failed test at t/prime-field.t line 320.

#   Failed test at t/prime-field.t line 323.

#   Failed test at t/prime-field.t line 324.

#   Failed test at t/prime-field.t line 329.

#   Failed test at t/prime-field.t line 335.

#   Failed test at t/prime-field.t line 340.

#   Failed test at t/prime-field.t line 182.

#   Failed test at t/prime-field.t line 185.

#   Failed test at t/prime-field.t line 190.

#   Failed test at t/prime-field.t line 192.

#   Failed test at t/prime-field.t line 193.

#   Failed test at t/prime-field.t line 320.

#   Failed test at t/prime-field.t line 323.

#   Failed test at t/prime-field.t line 324.

#   Failed test at t/prime-field.t line 329.

#   Failed test at t/prime-field.t line 335.

#   Failed test at t/prime-field.t line 340.
# Looks like you planned 263 tests but ran 245.
# Looks like you failed 39 tests of 245 run.
t/prime-field.t ....... Dubious, test returned 39 (wstat 9984, 0x2700)
Failed 57/263 subtests 

Test Summary Report
-------------------
t/prime-field.t     (Wstat: 9984 Tests: 245 Failed: 39)
  Failed tests:  11, 14, 26, 36, 40, 44-47, 50, 52, 62, 64-65
                68, 71, 74, 78-79, 82-84, 94, 96-97, 100
                103, 106, 110-111, 114-116, 126, 128-129
                132, 135, 138
  Non-zero exit status: 39
  Parse errors: Bad plan.  You planned 263 tests but ran 245.
Files=2, Tests=264,  1 wallclock secs ( 0.08 usr  0.01 sys +  0.20 cusr  0.03 csys =  0.32 CPU)
Result: FAIL
Failed 1/2 test programs. 39/264 subtests failed.
make: *** [test_dynamic] Error 39
  MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports MIKEM/Crypt-OpenSSL-EC-1.01.tar.gz
Running make install
  make test had returned bad status, won't install without force

答案1

我建议使用cpanm安装perl模块。

安装cpanm

sudo cpan App::cpanminus

然后安装Crypt::OpenSSL::EC

sudo cpanm Crypt::OpenSSL::EC

答案2

通过模块的问题队列 rt.cpan.org/Public/Bug/Display.html?id=104000 表明修补模块(或者构建非 RedHat 版本的 OpenSSL)可能是可行的方法。 – thrig 4 小时前

答案关于特里格评论解决了问题,我之前看到过这张票,并检查了我的 openssl 是否是使用该选项编译的,但输出:“openssl version -a”没有显示。经过几个小时的测试尝试了这个补丁。

相关内容