在Mac OS X上安装Crypt :: SSLeay

时间:2017-10-26 10:43:50

标签: macos perl openssl perl-module

尝试在Mac OS X上安装Crypt::SSLeay时出现以下错误:

$ sudo perl -MCPAN -e shell
cpan[1]> install Crypt::SSLeay
Reading '/Users/.cpan/Metadata'
  Database was generated on Thu, 26 Oct 2017 01:53:54 GMT
Running install for module 'Crypt::SSLeay'
Running make for N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz
Checksum for /Users/.cpan/sources/authors/id/N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz ok
Scanning cache /Users/.cpan/build for sizes
............................................................................DONE

  CPAN.pm: Building N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz

Cannot link with any of the requested SSL libraries 'ssl, crypto, ssl32, ssleay32, eay32, libeay32, z'
No 'Makefile' created'YAML' not installed, will not store persistent state
  NANIS/Crypt-SSLeay-0.72.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Could not read metadata file. Falling back to other methods to determine prerequisites
Failed during this command:
 NANIS/Crypt-SSLeay-0.72.tar.gz               : writemakefile NO -- No 'Makefile' created

我已根据找到的here说明安装了openssl,openssl version -a的输出为:

OpenSSL 1.1.0f  25 May 2017
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
compiler: cc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/mac-dev-env/openssl-1.1.0f/ssl\"" -DENGINESDIR="\"/usr/local/mac-dev-env/openssl-1.1.0f/lib/engines-1.1\"" 
OPENSSLDIR: "/usr/local/mac-dev-env/openssl-1.1.0f/ssl"
ENGINESDIR: "/usr/local/mac-dev-env/openssl-1.1.0f/lib/engines-1.1"

我不确定我还能做什么,因为我需要ssl库,但它似乎没有链接它?

3 个答案:

答案 0 :(得分:1)

  

OPENSSLDIR:“/ usr / local / mac-dev-env /openssl-1.1.0f / sss”

这不是openssl的标准位置。这解释了为什么找不到必要的文件:

  

无法链接任何请求的SSL库的ssl,crypto,ssl32,ssleay32,eay32,libeay32,z'

在查看Crypt :: SSLeay的README时,您会发现:

  

如果您在非标准位置拥有OpenSSL标头和库,则可以使用
     $ perl Makefile.PL --incpath = ... --libpath = ...

README中还有其他说明如何使用cpanm等设置路径。

除此之外,在大多数情况下,您不想安装Crypt :: SSLeay,而是安装Net :: SSLeay。 Crypt :: SSLeay仅支持保持旧版本的LWP正常工作,所有新版本(包括当前版本的LWP)都在Net :: SSLeay之上使用Net :: SSLeay和IO :: Socket :: SSL。

答案 1 :(得分:1)

如上所述,在自述文件中提到了“ --incpath”和“ --libpath”来使用自定义路径进行openssl安装。

所以应该是这样(注意:检查您的openssl版本,在此示例中为1.1.1d):

$ sudo perl Makefile.PL --incpath="/usr/local/Cellar/openssl@1.1/1.1.1d/include" --libpath="/usr/local/Cellar/openssl@1.1/1.1.1d/lib"

我很难理解应该在这些参数上使用什么路径。那些虽然有用。

答案 2 :(得分:0)

如果这与安装LWP::Protocol::https有关,因为您想使用LWP::UserAgent ...,则最好不要安装:IO::Socket::SSL而不是前面提到的Crypt::SSLeay