Cwd.c:可加载库和 Perl 二进制文件不匹配(获得握手密钥 0xdb00080,需要 0xde00080)

问题描述 投票:0回答:3

将 Ubuntu 16.04 LTS 升级到 18.04 LTS 后,所有 Perl 模块和“cpan”停止工作。每次我运行脚本都会导致错误

threads.c: loadable library and Perl binaries are mismatched (got handshake key 0xdb00080, needed 0xde00080)

当我尝试打开 cpan 时,它显示

Cwd.c: loadable library and Perl binaries are mismatched (got handshake key 0xdb00080, needed 0xde00080)

我在 ubuntu 16.04 中安装了“Cwd”、“threads”模块,其中 Perl 版本为 5.22.1,而在 ubuntu 18.04 中 Perl 版本为 5.26.1。

我尝试删除旧版本的模块但失败了。我删除了 ~/.cpan 文件夹中的内容。

PS: 在 root 用户中一切正常。 如果我跑

sudo su
cpan

工作完美。但作为普通用户,我无法运行任何 perl 模块/脚本/cpan。

我该如何纠正这个问题? 如何重新安装 cpan 或 cpan 模块?

我尝试重新安装 Perl,但没有帮助

sudo apt-get --reinstall install perl
sudo apt-get --reinstall install libcwd-guard-perl

我安装了 cpan minus、cpan plus ,但出现了同样的错误。

perl ubuntu upgrade perl-module cpan
3个回答
9
投票

为了解决问题,可以使用下一个链接:

https://dev.to/foursixnine/about-perl-and-mismatched-binaries-346l https://metacpan.org/pod/release/DBOOK/App-MigrateModules-0.002/script/perl-migrate-modules

或者在命令中:(替换为你的 perl5 文件夹,在我的例子中是 ~/perl5)

 mv <perl5> perl5_old
 cpan
 cpan App::MigrateModules
 perl-migrate-modules --from perl5_old /usr/bin/perl

其中 perl5 你的 perl 文件夹,通常在路径中存在于 ENV 变量 PERL5LIB 中。


4
投票

我通过以下方式解决了这个问题https://github.com/Perl/perl5/issues/15861

我运行了命令

perl -MCPAN -e 'recompile()'

重新编译所有模块,终于成功了。


0
投票

我在通过 Singularity 容器运行生物信息学工具“BRAKER3”时也遇到了这个问题。

大多数答案都指向Root安装的Perl和user安装的Perl库之间的冲突。

没有 Root 访问权限,我通过删除用户(我)安装的 Perl 库的所有环境变量(例如

$PERL5LIB
)并添加
export PERL5LIB="/usr/lib/perl5:/usr/local/lib/perl5"
到我的脚本中来解决这个问题,并真正使用 Root 构建的 Perl 东西。

雁阳, 最好的。

© www.soinside.com 2019 - 2024. All rights reserved.