首页 > 解决方案 > Perl LibXLST 在 Mac OS Big Sur 11.4 上失败

问题描述

我遇到了 Perl 应用程序的问题,该应用程序在多台计算机(所有 Intel Mac)上的 Mac OS Big Sur 11.4 上出现与 LibXSLT 相关的错误 - 它在 Mac OS 升级之前工作正常,现在似乎在新安装的设备上失败最新的 Mac。

最小脚本perl -MXML::LibXSLT -E 'say $INC{"XML/LibXSLT.pm"}'(使用系统 perl - 机器上没有安装其他 perl)的错误消息如下:

无法为模块 XML::LibXSLT 加载“/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle”:dlopen(/System/Library/Perl/ Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle, 0x0001): 未找到符号 '_xsltLibxsltVersion',预计在平面命名空间中由 '/System/Library/Perl/Extras/5.30/darwin -thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle' 在 /System/Library/Perl/5.30/darwin-thread-multi-2level/DynaLoader.pm 第 197 行。在 /System/Library/Perl/Extras /5.30/darwin-thread-multi-2level/XML/LibXSLT.pm 第 48 行。开始失败 - 编译在 /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/XML/LibXSLT.pm 中止第 48 行。在 require 中编译失败。BEGIN 失败——编译中止。

cpan -i XML::LibXSLT确认XML::LibXSLT is up to date (1.99).

我尝试使用更新 xslt 库,brew install libxslt但似乎没有任何区别。

我试过运行brew link libxslt --force,它现在什么都不做(Warning: Refusing to link macOS provided/shadowed software: libxslt)。

运行cpan -f -t XML::LibXSLT失败并显示以下错误消息:

looking for -lxslt... no
libxslt not found
Try setting LIBS and INC values on the command line

export LIBS="-L/usr/local/opt/libxslt/lib"如果我将 LIBS 和 INC 值设置为 brew和建议的路径export INC="-I/usr/local/opt/libxslt/include",它仍然会因此错误而失败。

关于如何调试这个的任何建议?我不是 Perl 开发人员,只是想运行现有的应用程序。

标签: macosperlmacos-big-surlibxslt

解决方案


Perlbrew

最终,我成功地使用了 perlbrew 而不是默认的 OS X 系统 perl。

根据https://perlbrew.pl的建议,以下过程有效:

curl -L https://install.perlbrew.pl | bash   
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5.16.0   
perlbrew switch perl-5.16.0
sudo cpan -i XML::LibXSLT

我认为它不是一个合适的解决方案,而是一种解决方法——毕竟,OS X 预装的 libxslt 没有理由不应该只与预装的系统 perl 一起工作——但它至少可以工作。


推荐阅读