Mac M1 Homebrew Perl Carton Net::SSLeay 正在以不安全的方式加载 libcrypto

Mac M1 Homebrew Perl Carton Net::SSLeay is loading libcrypto in an unsafe way

我正在尝试使用 Carton 安装 Net::SSLeay。 安装失败并显示此消息

Configuring Net-SSLeay-1.90 Running Makefile.PL Do you want to run external tests? 
These tests *will* *fail* if you do not have network connectivity. [n] n 
*** Found LibreSSL-2.8.3 installed in /usr 
*** Be sure to use the same compiler and options to compile your OpenSSL, perl, and Net::SSLeay. Mixing and matching compilers is not supported. 
Checking if your kit is complete... Looks good 
WARNING: /opt/homebrew/Cellar/perl/5.32.1_1/bin/perl is loading libcrypto in an unsafe way -> N/A

我已经用系统 perl、brew perl 和多个 perlbrew perl 试过了。 Google 提出了一个使用 x86_64 架构构建自制软件的临时解决方案。 这确实适用于 libcrypto 错误,但给了我一系列完全不同的问题,包括 mysql 而不是 运行。

我尝试过的其他“解决方案”是按照许多其他帖子的建议对 libssl 和 libcrypto 进行符号链接,遗憾的是都没有成功。

知道如何解决这个问题或解决这个问题而不必重新安装所有 brew 包 x86_64 吗?

快速解决方法

如果您正在寻找快速解决方法,请按照以下步骤操作。

  1. 运行 carton bundle 创建供应商缓存目录。
  2. 转到缓存的 tarball 'cache/authors/id/C/CH/CHRISN/' 并解压缩 tar -xvzf Net-SSLeay-1.90.tar.gz
  3. 编辑Makefile.PL,将my $prefix = find_openssl_prefix();改为 my $prefix = '/opt/homebrew/opt/openssl@1.1'; ** 调整到您的 openssl 位置。
  4. 保存并创建新的 tarball tar -czvf Net-SSLeay-1.90.tar.gz Net-SSLeay-1.90
  5. 运行 carton install --cached 使用修改后的版本

希望这对寻找解决方法的任何人有所帮助

您可以分两步解决这个问题:

  • ExtUtils::MakeMaker 至少升级到 7.58 版(例如 cpanm ExtUtils::MakeMaker
  • 通过 macports (sudo port install openssl) or homebrew 安装 openssl (brew install --cask openssl)

更好的解决方法:

我在 shell 中输入 export OPENSSL_PREFIX=/opt/homebrew/opt/openssl@1.1,然后 运行 cpan。我检查了 Makefile.PL 中的代码,函数 find_openssl_prefix 做的第一件事是检查 OPENSSL_PREFIX 环境变量。如果已设置,则函数将 return 其内容。

将变量添加到您的 .profile、.cshrc、.bashrc、.zshrc 或您 shell 使用的任何 rc 文件中,您再也不用担心了!

在 Monterey 更新后,x86_64 架构也再次出现问题,但只需符号链接您最新的 openssl(它在哪里,取决于您的安装方式)似乎可以解决此问题。示例:

$ export OPENSSL_PREFIX=[find your openssl installation]
$ sudo ln -s $OPENSSL_PREFIX/lib/libssl.dylib /usr/local/lib/
$ sudo ln -s $OPENSSL_PREFIX/lib/libcrypto.dylib /usr/local/lib/