架构 Linux Perl。 (数据转储器)未定义的符号 Perl_xs_apiversion_bootcheck

Arch Linux Perl. (Data Dumper) undefined symbol Perl_xs_apiversion_bootcheck

由于最近的更新 Perl 无法在我的 Arch Linux 系统上执行大部分脚本。

大多数时候由于 Data::Dumper 模块中未定义的符号而失败。其他时候是因为 Parser.so 具有相同的未定义符号 Perl_xs_apiversion_bootcheck

Perl v5.22.0 Data::Dumper 是最新的 (2.154)。

完整错误:

/usr/bin/perl: symbol lookup error: perl5/lib/perl5/x86_64-linux-thread-multi/auto/Data/Dumper/Dumper.so: undefined symbol: Perl_xs_apiversion_bootcheck

我已经尝试重新安装模块,但没有帮助。

我找到了这个帖子:

他们说的是不同perl版本的问题,我这里好像没有。

还有其他想法吗? (重新安装 perl,因为从这里看起来不可能...)

谢谢

Arch Linux 最近从 Perl 5.20 升级到 Perl 5.22。这些与 ABI 不兼容,因此需要重新构建为 Perl 5.20 安装的任何 XS 模块,否则您将遇到您所描述的错误。

Arch 的 perl-5.22.0-1 软件包包括 Data::Dumper 2.158。既然你说你有 2.154,你必须手动安装升级到 Data::Dumper for Perl 5.20。您需要删除那个(现已过时的)版本。

pacman -Qi perl-data-dumper 有报告吗?如果是,您可以尝试 pacman -R perl-data-dumper.

更新: 看来您一直在使用 cpan 将模块安装到系统 Perl 目录中。这最终会混合 pacman 安装的文件和 cpan 安装的文件,这就是不推荐的原因。

您应该考虑安装 CPANPLUS::Dist::Arch and using cpanp。你可以这样做:

sudo pacman -S perl-cpanplus-dist-arch
setupdistarch

之后,使用 cpanp 安装模块将构建一个包文件并使用 pacman 安装它。然后您可以使用 pacman 卸载它们。