27

出于某种原因,每当我运行任何 Perl 模块(如 cpanm)时,我都会收到以下响应:

ListUtil.c: loadable library and perl binaries are mismatched (got         
handshake key 0xdb00080, needed 0xdb80080)

我不确定为什么会这样。似乎没有任何额外的堆栈跟踪,即使有很多关于此错误的错误报告和问题,我也无法找到解决方案。我正在运行 Ubuntu 17.04。

编辑:我正在运行 Ubuntu 附带的 Perl 的默认安装。

4

4 回答 4

33

当 perl 或 perl 模块与官方软件包一起单独安装时,可能会发生这种情况。环境变量可用于切换到不同的 perl 安装。

要确定是否是这种情况,请运行:

env | grep PERL

在输出中具有PERL5LIBPERL_LOCAL_LIB_ROOT可能会导致问题。尝试取消设置环境变量并将它们从您的~/.bashrc文件或等效的 shell rc 文件中删除。

于 2018-07-05T08:22:03.420 回答
5

源自 Bert Hekman,于 7 月 5 日 8:22 回答:

env PERL5LIB= PERL_LOCAL_LIB_ROOT= cpan

为我做了一个快速而肮脏的解决方案。

于 2018-09-01T08:09:56.953 回答
2

好的,事实证明重新启动就可以了。我想我应该在我发帖之前把它关掉再打开。

于 2017-07-20T14:49:40.963 回答
0

使用上述答案,我解决了这个问题。我的本地 perl 文件夹中有一份 List::Util 的副本。

我设置了环境变量,然后使用 cpan 更新 List::Util。

$ PERL5LIB= PERL_LOCAL_LIB_ROOT= cpanm List::Util
--> Working on List::Util
Fetching http://www.cpan.org/authors/id/P/PE/PEVANS/Scalar-List-Utils-1.59.tar.gz ... OK
Configuring Scalar-List-Utils-1.59 ... OK
Building and testing Scalar-List-Utils-1.59 ... OK
Successfully installed Scalar-List-Utils-1.59 (upgraded from 1.55)
1 distribution installed

然后我不再需要使用 PERL5LIB= 或 PERL_LOCAL_LIB_ROOT=,我可以正常调用我的 perl 脚本。

于 2021-10-07T19:27:46.257 回答