我在使用 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 行。 BEGIN 失败——编译在 /System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/XML/LibXSLT.pm 第 48 行中止。 编译失败。 BEGIN 失败——编译中止。
cpan -i XML::LibXSLT
确认 XML::LibXSLT is up to date (1.99).
我尝试使用 brew install libxslt
更新 xslt 库,但似乎没有任何区别。
我试过运行 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
如果我将 LIBS 和 INC 值设置为 brew export LIBS="-L/usr/local/opt/libxslt/lib"
和 export INC="-I/usr/local/opt/libxslt/include"
建议的路径,它仍然会失败并出现此错误。
关于如何调试这个有什么建议吗?我不是 Perl 开发人员,只是尝试运行现有应用。
答案 0 :(得分:2)
最终,我成功地使用了 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 一起工作——但它至少可以工作。