安装 CPAN 模块时如何指定外部库文件位置

问题描述

我正在尝试在 MacOS 升级到 11.4 后让 Perl 的 Finance::Quote 模块工作。依赖项之一是 B::Keywords。 B::Keywords 安装失败并出现此错误

> sudo cpan B::Keywords
[...]
Can't open /System/Library/Perl/5.30/darwin-thread-multi-2level/CORE/keywords.h: No such file or directory at t/11keywords.t line 25

仔细一看,我发现我的系统上的这个位置有keywords.h:

/System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Perl/5.30/darwin-thread-multi-2level/CORE/keywords.h

有没有办法告诉 cpan(或 cpanm,或其他一些安装工具)在哪里寻找这些头文件?或者,欢迎使用任何其他方法来实现此目的。

解决方法

似乎他们从 macOS 10.14 上的系统 perl 的 keywords.h 目录(相对于从 CORE 给出的路径)中删除了 $Config{archlibexp},请参阅 this 错误报告。

您无法安装 B::Keywords 的原因是测试失败 11keywords.t,请参阅第 24 行。一些可能的解决方案:

  • 在不运行测试的情况下安装模块 (sudo cpan -T B::Keywords)
  • Submit an issue 在 GitHub 问题跟踪器,以便模块的作者可以修复问题。
  • 使用 perlbrew 安装模块,而不是使用系统 perl(我对此进行了测试,在这里工作正常)。