ubuntu ListUtil.c:Perl库和Perl二进制文件不匹配(获得握手密钥0xdb00080,需要0xdb80080)

0lvr5msh  于 2023-10-17  发布在  Perl
关注(0)|答案(5)|浏览(158)

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

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

我不知道为什么会这样。似乎没有任何额外的堆栈跟踪,即使有很多关于这个错误的bug报告和问题,我也无法找到解决方案。我用的是Ubuntu 17.04。
编辑:我正在运行Ubuntu附带的Perl的默认安装。

5jvtdoz2

5jvtdoz21#

当perl或perl模块单独沿着安装在官方软件包中时,可能会发生这种情况。环境变量可用于切换到不同的perl安装。
要了解是否是这种情况,请运行:

env | grep PERL

输出中包含PERL5LIBPERL_LOCAL_LIB_ROOT可能会导致此问题。尝试取消设置环境变量,并将其从~/.bashrc文件或等效的shell rc文件中删除。

nqwrtyyt

nqwrtyyt2#

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

env PERL5LIB= PERL_LOCAL_LIB_ROOT= cpan

作为一个快速而肮脏的解决方案对我起了作用。

9rbhqvlz

9rbhqvlz3#

好吧,结果是重启成功了。我想我应该在发帖之前把它关掉再打开。

2admgd59

2admgd594#

通过以上的回答,我解决了这个问题。我在本地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

这样我就不再需要使用PERL 5LIB =或PERL_LIB_ROOT=了,我可以像平常一样调用我的perl脚本。

y1aodyip

y1aodyip5#

在macOS 13.6中,升级Homebrew perl后,我遇到了同样的错误。我将模块安装到local::lib以在升级过程中持久化它们,下面给出了违规者的位置:

$ find $PERL5LIB -path '*List*.pm'
.../lib/perl5/Test/Deep/ListMethods.pm
.../lib/perl5/darwin-thread-multi-2level/List/Util/XS.pm
.../lib/perl5/darwin-thread-multi-2level/List/Util.pm

运行rm -rf $PERL5LIB/darwin-thread-multi-2level后,我可以再次运行脚本。

相关问题