【问题标题】:Perl LibXLST failing on Mac OS Big Sur 11.4Perl LibXLST 在 Mac OS Big Sur 11.4 上失败
【发布时间】:2021-06-09 15:11:02
【问题描述】:

我遇到了一个 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: dlopen(/System/Library) 加载 '/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle' /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 开发人员,只是想运行现有的应用程序。

【问题讨论】:

  • 出于好奇,cpan -f -t XML::LibXSLT 运行成功了吗?
  • 模块在这里安装得很好。 macOS 11.2.3,perlbrew perl 版本 5.32.0。你用的是系统perl吗?
  • "无法为模块 XML 加载 '/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level/auto/XML/LibXSLT/LibXSLT.bundle': :LibXSLT" :这是您在运行cpan XML::LibXSLT 时遇到的错误还是来自使用该模块的脚本?
  • 这是 M1 还是 intel Mac?
  • @HåkonHægland 是的,单行是一个很好的最小示例,它确实在我目前可用的两个 11.4 mac 上的系统 perl 上给出了相同的错误。我用它更新了问题。

标签: macos perl macos-big-sur libxslt


【解决方案1】:

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 一起工作——但它至少可以工作。

【讨论】:

  • 很高兴您成功了。稍后我将看看系统 perl 的问题。请注意,您不需要(也不应该使用)sudo 与 perlbrew perl。 perl 5.16 版已经九年了,我会使用最新版本 5.34 或 5.32 之一。
  • @HåkonHægland 好吧,perlbrew.pl 仍然将 5.16 列为“最新稳定版本”:)
  • 是的,这不好。可能他们只是忘记更新那部分了。我会通知他们的。
  • Here 是稳定版本的列表
  • “perlbrew.pl 仍将 5.16 列为最新的稳定版本” :添加了一个 comment 关于此..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 2020-12-18
  • 2021-05-09
  • 1970-01-01
  • 2021-08-28
  • 2021-09-12
  • 1970-01-01
相关资源
最近更新 更多