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 吗?
快速解决方法
如果您正在寻找快速解决方法,请按照以下步骤操作。
- 运行
carton bundle
创建供应商缓存目录。
- 转到缓存的 tarball 'cache/authors/id/C/CH/CHRISN/' 并解压缩
tar -xvzf Net-SSLeay-1.90.tar.gz
- 编辑Makefile.PL,将
my $prefix = find_openssl_prefix();
改为
my $prefix = '/opt/homebrew/opt/openssl@1.1';
** 调整到您的 openssl 位置。
- 保存并创建新的 tarball
tar -czvf Net-SSLeay-1.90.tar.gz Net-SSLeay-1.90
- 运行
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/
我正在尝试使用 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 吗?
快速解决方法
如果您正在寻找快速解决方法,请按照以下步骤操作。
- 运行
carton bundle
创建供应商缓存目录。 - 转到缓存的 tarball 'cache/authors/id/C/CH/CHRISN/' 并解压缩
tar -xvzf Net-SSLeay-1.90.tar.gz
- 编辑Makefile.PL,将
my $prefix = find_openssl_prefix();
改为my $prefix = '/opt/homebrew/opt/openssl@1.1';
** 调整到您的 openssl 位置。 - 保存并创建新的 tarball
tar -czvf Net-SSLeay-1.90.tar.gz Net-SSLeay-1.90
- 运行
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/