微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Perl:安装 Filter::Crypto 失败并显示“未找到 Openssl 加密库”

如何解决Perl:安装 Filter::Crypto 失败并显示“未找到 Openssl 加密库”

我想通过 cpan 安装 Filter::Crypto (W10,cygwin,both current)。失败的。结果见下

Running install for module 'Filter::Crypto'
CPAN: Digest::SHA loaded ok (v6.02)
CPAN: Compress::Zlib loaded ok (v2.084)
Checksum for /home/Wolfgang/.cpan/sources/authors/id/S/SH/SHAY/Filter-Crypto-2.09.tar.gz ok
CPAN: YAML loaded ok (v1.30)
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20200601_30)
Configuring S/SH/SHAY/Filter-Crypto-2.09.tar.gz with Makefile.PL
Where is your OpenSSL? [/usr] /usr

Found include directory ............ /usr/include
Found OpenSSL version .............. 1.1.1f
Error (109): No OpenSSL crypto library found at Makefile.PL line 66.
Warning: No success on command[/usr/bin/perl Makefile.PL]
  SHAY/Filter-Crypto-2.09.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK

在我看来,查找库的算法有问题,因为查找结果如下:

$ find usr -iname '*crypto*' | grep -v python | grep -v '.3.gz'
usr/include/openssl/crypto.h
usr/include/openssl/cryptoerr.h
usr/include/w32api/windows.security.cryptography.h
usr/include/xmlsec1/xmlsec/crypto.h
usr/include/xmlsec1/xmlsec/openssl/crypto.h
usr/share/crypto-policies
usr/share/doc/crypto-policies
usr/share/man/man7/crypto-policies.7.gz
usr/share/man/man7/crypto.7.gz
usr/share/man/man8/update-crypto-policies.8.gz
usr/x86_64-w64-mingw32/sys-root/mingw/include/openssl/crypto.h
usr/x86_64-w64-mingw32/sys-root/mingw/lib/libcrypto.a
usr/x86_64-w64-mingw32/sys-root/mingw/lib/libcrypto.dll.a
usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/libcrypto.pc
usr/bin/cygcrypto-1.0.0.dll
usr/bin/cygcrypto-1.1.dll
usr/bin/cygk5crypto-3.dll
usr/bin/update-crypto-policies
usr/lib/libcrypto.dll.a
usr/lib/pkgconfig/libcrypto.pc

2021-01-15:在probe_for_lib_file 中添加print,检查/usr/lib 时只通过一次,如果没有其他工作,这似乎是认路径:

Found include directory ............ /usr/include
Found OpenSSL version .............. 1.1.1f
Probing dir '/usr/lib',(config(cc) = gcc)
Error (109): No OpenSSL crypto library found at Makefile.PL line 66.

在这个目录中有一个文件 libssl.dll.a,但是包没有寻找那个文件

如果有人可以告诉我期望的 lib 文件名,我会手动将文件传输到那里并重试

搜索 libssl 会显示多个结果,其中 year=2020 的行可能是具有最佳/当前信息的一次

$ find /usr -iname '*libssl*' -ls
2814749768319286    580 -rw-r--r--   1  Wolfgang Kein       591578 Mar 28  2018 /usr/x86_64-w64-mingw32/sys-root/mingw/lib/libssl.a
2814749768319287    204 -rwxr-xr-x   1  Wolfgang Kein       208402 Mar 28  2018 /usr/x86_64-w64-mingw32/sys-root/mingw/lib/libssl.dll.a
2814749768319289      1 -rw-r--r--   1  Wolfgang Kein          344 Mar 28  2018 /usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/libssl.pc
1970324837361655    664 -rwxr-xr-x   1  Wolfgang Kein       678966 Apr  8  2020 /usr/lib/libssl.dll.a
1970324837361657      1 -rw-r--r--   1  Wolfgang Kein          264 Apr  8  2020 /usr/lib/pkgconfig/libssl.pc

解决方法

所以我的猜测是,唯一的问题是缺少或错误的规则 对于 cygwin - 或者 cygwin 不遵守规则

是的,该模块似乎还不支持 Cygwin。我创建了一个 pull request,它通过修补 Makefile.PL 来解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。