1

I'm trying to install perl module Crypt::SSLeay from cpan running in Debian-based environment (in order to rule out dependency issues, I'm running this in official perl Docker container), but I getting error while cpan installer doing tests:

$ docker run --rm -it perl:stable bash Docker# cpanm Crypt::SSLeay ... Building and testing Crypt-SSLeay-0.72 ... FAIL ! Installing Crypt::SSLeay failed. See /root/.cpanm/work/1234567890/build.log for details. Retry with --force to force install it. 33 distributions installed Docker# tail /root/.cpanm/work/1234567890/build.log ... Result: FAIL Failed 3/6 test programs. 7/22 subtests failed. make: *** [Makefile:1092: test_dynamic] Error 255 -> FAIL Installing Crypt::SSLeay failed. See /root/.cpanm/work/1234567890/build.log for details. Retry with --force to force install it. Expiring 1 work directories. 33 distributions installed Docker# perl -v | head -n2 This is perl 5, version 36, subversion 1 (v5.36.1) built for x86_64-linux-gnu 

I've tried this with different perl versions (docker run perl:5.36, perl:5.30, perl:5.20, perl:5.16, perl:5.14) with no effect.

What's the way to fix that?

Added: full module installation log is shown below:

Docker# cpanm Crypt::SSLeay --> Working on Crypt::SSLeay Fetching http://www.cpan.org/authors/id/N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz ... OK Configuring Crypt-SSLeay-0.72 ... OK Building and testing Crypt-SSLeay-0.72 ... FAIL ! Installing Crypt::SSLeay failed. See /root/.cpanm/work/1688298158.5768/build.log for details. Retry with --force to force install it. Docker# cat ~/.cpanm/work/1688298158.5768/build.log cpanm (App::cpanminus) 1.7046 on perl 5.036001 built for x86_64-linux-gnu Work directory is /root/.cpanm/work/1688298158.5768 You have make /usr/bin/make You have LWP 6.71 You have /bin/tar: tar (GNU tar) 1.34 Copyright (C) 2021 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by John Gilmore and Jay Fenlason. You have /usr/bin/unzip Searching Crypt::SSLeay () on cpanmetadb ... --> Working on Crypt::SSLeay Fetching http://www.cpan.org/authors/id/N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz -> OK Unpacking Crypt-SSLeay-0.72.tar.gz Entering Crypt-SSLeay-0.72 Checking configure dependencies from META.json Checking if you have Path::Class 0.26 ... Yes (0.37) Checking if you have ExtUtils::CBuilder 0.280205 ... Yes (0.280236) Checking if you have Getopt::Long 0 ... Yes (2.52) Checking if you have Try::Tiny 0.19 ... Yes (0.31) Configuring Crypt-SSLeay-0.72 Running Makefile.PL *** THIS IS NOT AN ERROR, JUST A MESSAGE FOR YOUR INFORMATION *** Do you really need Crypt::SSLeay? Starting with version 6.02 of LWP, https support was unbundled into LWP::Protocol::https. This module specifies as one of its prerequisites IO::Socket::SSL which is automatically used by LWP::UserAgent unless this preference is overridden separately. IO::Socket::SSL is a more complete implementation, and, crucially, it allows hostname verification. Crypt::SSLeay does not support this. At this point, Crypt::SSLeay is maintained to support existing software that already depends on it. However, it is possible that your software does not really depend on Crypt::SSLeay, only on the ability of LWP::UserAgent class to communicate with sites over SSL/TLS. If are using version LWP 6.02 or later, and therefore have installed LWP::Protocol::https and its dependencies, and do not explicitly use Net::SSL before loading LWP::UserAgent, or override the default socket class, you are probably using IO::Socket::SSL and do not really need Crypt::SSLeay. Before installing Crypt::SSLeay, you may want to try specifying a dependency on LWP::Protocol::https. ================================================================================ Output from '/root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/openssl-version': OpenSSL 1.1.1n 15 Mar 2022 101010ef ================================================================================ Checking if your kit is complete... Looks good Warning (mostly harmless): No library found for -lssl32 Warning (mostly harmless): No library found for -lssleay32 Warning (mostly harmless): No library found for -leay32 Warning (mostly harmless): No library found for -llibeay32 Generating a Unix-style Makefile Writing Makefile for Crypt::SSLeay Writing MYMETA.yml and MYMETA.json -> OK Checking dependencies from MYMETA.json ... Checking if you have Try::Tiny 0.19 ... Yes (0.31) Checking if you have LWP::Protocol::https 6.02 ... Yes (6.10) Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.64) Checking if you have MIME::Base64 0 ... Yes (3.16) Checking if you have Test::More 0.19 ... Yes (1.302190) Building and testing Crypt-SSLeay-0.72 cp SSLeay.pm blib/lib/Crypt/SSLeay.pm cp lib/Crypt/SSLeay/MainContext.pm blib/lib/Crypt/SSLeay/MainContext.pm cp lib/Crypt/SSLeay/Version.pm blib/lib/Crypt/SSLeay/Version.pm cp lib/Crypt/SSLeay/CTX.pm blib/lib/Crypt/SSLeay/CTX.pm cp lib/Crypt/SSLeay/X509.pm blib/lib/Crypt/SSLeay/X509.pm cp lib/Crypt/SSLeay/Conn.pm blib/lib/Crypt/SSLeay/Conn.pm cp lib/Net/SSL.pm blib/lib/Net/SSL.pm cp lib/Crypt/SSLeay/Err.pm blib/lib/Crypt/SSLeay/Err.pm Running Mkbootstrap for SSLeay () chmod 644 "SSLeay.bs" "/usr/local/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SSLeay.bs blib/arch/auto/Crypt/SSLeay/SSLeay.bs 644 "/usr/local/bin/perl" "/usr/local/lib/perl5/5.36.1/ExtUtils/xsubpp" -typemap '/usr/local/lib/perl5/5.36.1/ExtUtils/typemap' -typemap '/root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/typemap' SSLeay.xs > SSLeay.xsc mv SSLeay.xsc SSLeay.c cc -c -fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2 -DVERSION=\"0.72\" -DXS_VERSION=\"0.72\" -fPIC "-I/usr/local/lib/perl5/5.36.1/x86_64-linux-gnu/CORE" SSLeay.c SSLeay.xs: In function 'XS_Crypt__SSLeay__CTX_new': SSLeay.xs:152:31: warning: implicit declaration of function 'SSLv3_client_method'; did you mean 'SSLv23_client_method'? [-Wimplicit-function-declaration] 152 | ctx = SSL_CTX_new(SSLv3_client_method()); | ^~~~~~~~~~~~~~~~~~~ | SSLv23_client_method SSLeay.xs:152:31: warning: passing argument 1 of 'SSL_CTX_new' makes pointer from integer without a cast [-Wint-conversion] 152 | ctx = SSL_CTX_new(SSLv3_client_method()); | ^~~~~~~~~~~~~~~~~~~~~ | | | int In file included from SSLeay.xs:35: /usr/include/openssl/ssl.h:1503:47: note: expected 'const SSL_METHOD *' {aka 'const struct ssl_method_st *'} but argument is of type 'int' 1503 | __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); | ~~~~~~~~~~~~~~~~~~^~~~ SSLeay.xs:157:31: warning: implicit declaration of function 'SSLv2_client_method'; did you mean 'SSLv23_client_method'? [-Wimplicit-function-declaration] 157 | ctx = SSL_CTX_new(SSLv2_client_method()); | ^~~~~~~~~~~~~~~~~~~ | SSLv23_client_method SSLeay.xs:157:31: warning: passing argument 1 of 'SSL_CTX_new' makes pointer from integer without a cast [-Wint-conversion] 157 | ctx = SSL_CTX_new(SSLv2_client_method()); | ^~~~~~~~~~~~~~~~~~~~~ | | | int In file included from SSLeay.xs:35: /usr/include/openssl/ssl.h:1503:47: note: expected 'const SSL_METHOD *' {aka 'const struct ssl_method_st *'} but argument is of type 'int' 1503 | __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); | ~~~~~~~~~~~~~~~~~~^~~~ rm -f blib/arch/auto/Crypt/SSLeay/SSLeay.so LD_RUN_PATH="/usr/lib/x86_64-linux-gnu" cc -shared -O2 -L/usr/local/lib -fstack-protector-strong SSLeay.o -o blib/arch/auto/Crypt/SSLeay/SSLeay.so \ -lssl -lcrypto -lz \ chmod 755 blib/arch/auto/Crypt/SSLeay/SSLeay.so "/usr/local/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SSLeay.bs blib/arch/auto/Crypt/SSLeay/SSLeay.bs 644 PERL_DL_NONLAZY=1 "/usr/local/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t # Failed test 'use Crypt::SSLeay;' # at t/00-basic.t line 6. # Tried to use 'Crypt::SSLeay'. # Error: Can't load '/root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so' for module Crypt::SSLeay: /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so: undefined symbol: SSLv2_client_method at /usr/local/lib/perl5/5.36.1/x86_64-linux-gnu/DynaLoader.pm line 206. # at t/00-basic.t line 6. # Compilation failed in require at t/00-basic.t line 6. # BEGIN failed--compilation aborted at t/00-basic.t line 6. # Failed test 'use Crypt::SSLeay::CTX;' # at t/00-basic.t line 7. # Tried to use 'Crypt::SSLeay::CTX'. # Error: Attempt to reload Crypt/SSLeay.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/CTX.pm line 2. # Compilation failed in require at t/00-basic.t line 7. # BEGIN failed--compilation aborted at t/00-basic.t line 7. # Failed test 'use Crypt::SSLeay::Conn;' # at t/00-basic.t line 8. # Tried to use 'Crypt::SSLeay::Conn'. # Error: Attempt to reload Crypt/SSLeay.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/Conn.pm line 2. # Compilation failed in require at t/00-basic.t line 8. # BEGIN failed--compilation aborted at t/00-basic.t line 8. # Failed test 'use Crypt::SSLeay::Err;' # at t/00-basic.t line 9. # Tried to use 'Crypt::SSLeay::Err'. # Error: Attempt to reload Crypt/SSLeay.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/Err.pm line 2. # Compilation failed in require at t/00-basic.t line 9. # BEGIN failed--compilation aborted at t/00-basic.t line 9. # Failed test 'use Crypt::SSLeay::MainContext;' # at t/00-basic.t line 10. # Tried to use 'Crypt::SSLeay::MainContext'. # Error: Attempt to reload Crypt/SSLeay/CTX.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/MainContext.pm line 8. # Compilation failed in require at t/00-basic.t line 10. # BEGIN failed--compilation aborted at t/00-basic.t line 10. # Failed test 'use Crypt::SSLeay::Version;' # at t/00-basic.t line 12. # Tried to use 'Crypt::SSLeay::Version'. # Error: Attempt to reload Crypt/SSLeay.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/Version.pm line 2. # Compilation failed in require at t/00-basic.t line 12. # BEGIN failed--compilation aborted at t/00-basic.t line 12. # Failed test 'use Net::SSL;' # at t/00-basic.t line 23. # Tried to use 'Net::SSL'. # Error: Attempt to reload Crypt/SSLeay.pm aborted. # Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Net/SSL.pm line 20. # Compilation failed in require at t/00-basic.t line 23. # BEGIN failed--compilation aborted at t/00-basic.t line 23. Undefined subroutine &main::main_ctx called at t/00-basic.t line 49. # Tests were run but no plan was declared and done_testing() was not seen. # Looks like your test exited with 2 just after 13. t/00-basic.t ..... Dubious, test returned 2 (wstat 512, 0x200) Failed 7/13 subtests (less 5 skipped subtests: 1 okay) Can't load '/root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so' for module Crypt::SSLeay: /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so: undefined symbol: SSLv2_client_method at /usr/local/lib/perl5/5.36.1/x86_64-linux-gnu/DynaLoader.pm line 206. at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Net/SSL.pm line 20. Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Net/SSL.pm line 20. Compilation failed in require at t/01-connect.t line 6. BEGIN failed--compilation aborted at t/01-connect.t line 6. # Looks like your test exited with 2 before it could output anything. t/01-connect.t ... Dubious, test returned 2 (wstat 512, 0x200) Failed 8/8 subtests # Reading configuration from 'test.config' on linux # network_tests : 0 t/02-live.t ...... skipped: Network tests disabled Can't load '/root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so' for module Crypt::SSLeay: /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/arch/auto/Crypt/SSLeay/SSLeay.so: undefined symbol: SSLv2_client_method at /usr/local/lib/perl5/5.36.1/x86_64-linux-gnu/DynaLoader.pm line 206. at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/Version.pm line 2. Compilation failed in require at /root/.cpanm/work/1688298158.5768/Crypt-SSLeay-0.72/blib/lib/Crypt/SSLeay/Version.pm line 2. Compilation failed in require at t/03-version.t line 14. BEGIN failed--compilation aborted at t/03-version.t line 14. t/03-version.t ... Dubious, test returned 2 (wstat 512, 0x200) No subtests run t/boilerplate.t .. ok t/manifest.t ..... skipped: Author tests not required for installation Test Summary Report ------------------- t/00-basic.t (Wstat: 512 (exited 2) Tests: 13 Failed: 7) Failed tests: 1-5, 7-8 Non-zero exit status: 2 Parse errors: No plan found in TAP output t/01-connect.t (Wstat: 512 (exited 2) Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: Bad plan. You planned 8 tests but ran 0. t/03-version.t (Wstat: 512 (exited 2) Tests: 0 Failed: 0) Non-zero exit status: 2 Parse errors: No plan found in TAP output Files=6, Tests=22, 0 wallclock secs ( 0.03 usr 0.01 sys + 0.50 cusr 0.12 csys = 0.66 CPU) Result: FAIL Failed 3/6 test programs. 7/22 subtests failed. make: *** [Makefile:1092: test_dynamic] Error 255 -> FAIL Installing Crypt::SSLeay failed. See /root/.cpanm/work/1688298158.5768/build.log for details. Retry with --force to force install it. Docker# 
4
  • 1
    Crypt::SSLeay is old, very old. Last updated 2014. The author itself documents that you probable don't need this but other modules - read metacpan.org/release/NANIS/Crypt-SSLeay-0.72/source/README.md: "At this point, Crypt::SSLeay is maintained to support existing software that already depends on it. However, it is possible that your software does not really depend on Crypt::SSLeay, only on the ability of LWP::UserAgent to communicate with sites over SSL/TLS.2" Commented Jul 2, 2023 at 10:47
  • 1
    Apart from you should provide the full build log, not just the parts where the tests are failing. Failing tests might just be inherited errors of an earlier problem during build which you don't show. Commented Jul 2, 2023 at 11:04
  • @SteffenUllrich Full logs added. I know that it's very old stuff, I'm trying to rescue 3rd-party perl application from outdated FreeBSD server to modern Linux environment, likely with docker. 2014 is okay, application was deployed by me around 2005 and somehow worked since than, without updates and migrations. The worst thing is that I don't know perl at all. Crypt::SSLeay is the dependency for that application. Commented Jul 2, 2023 at 11:49
  • 2
    Based on the errors it looks like Crypt::SSLeay expects SSLv3 and maybe even SSLv2 support to be available in the OpenSSL build - which shows how old it is. I suggest that you use a version of Crypt::SSLeay from the repository github.com/nanis/Crypt-SSLeay/tree/master, which can hopefully deal with your more modern OpenSSL which neither support SSLv2 nor SSLv3 anymore. Commented Jul 2, 2023 at 12:35

1 Answer 1

1

Instead of installing via CPAN, you could use apt-get. Like this..

FROM perl:stable RUN apt-get update -y && \ apt-get install -y libcrypt-ssleay-perl 
1
  • 2
    That definitely works and can be considered as quick-and-easy solution. Thank you for your answer! However, there is a reason why I don't want to install perl modules from apt-get. In such a scenario, it is impossible to control versions: perl modules would be installed onto system-wide perl and you can't switch from system-wide perl version (currently perl 5.36.0 in Debian, who knows which one tomorrow?) to another one (newer or older). Commented Jul 2, 2023 at 20:56

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.