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

How to specify external library file locations when installing CPAN modules

我试图让 Perl 的 Finance::Quote 模块在 MacOS 升级到 11.4 后工作。依赖项之一是 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,或其他一些安装工具)在哪里寻找这些 headers?或者,欢迎使用任何其他方法来实现此目的。

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

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

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