我正在使用 perl5 并执行我的脚本
perl myscript.R
Run Code Online (Sandbox Code Playgroud)
并出现以下错误。
Can't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /kb/deployment/lib /kb/deployment/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base).
BEGIN failed--compilation aborted.
Run Code Online (Sandbox Code Playgroud)
所以我使用以下命令安装了 local::lib
cpan local::lib
Run Code Online (Sandbox Code Playgroud)
但在我尝试使用 perl myscript.pl 并得到
XS.c: loadable library and perl binaries are mismatched (got handshake key 0xce00080, needed 0xdb80080)
Run Code Online (Sandbox Code Playgroud)
我对解决这个问题一无所知。
ike*_*ami 10
您尝试加载的模块的二进制组件的版本和 Perl 组件的版本不匹配。
您似乎已使用 local::lib 在您的主目录中安装模块。升级您的perl系统会导致此设置严重失败。解决方案是删除~/perl5[1]并重新安装您本地安装的模块。
如果您有多个 Perl 版本,或者您不想在下次升级 Perl 时出现此问题,该怎么办?
有多种方法可以告诉安装程序在您的主目录中安装模块,以便 Perl 的多个版本可以共享安装目录,[2]但它实际上不起作用。[3]
这就是为什么我习惯perlbrew将 Perl 本身安装在我的主目录中,这样我就不必覆盖模块的安装位置。使用perlbrew有以下好处:
PREFIX/--prefix和LIB/--lib选项传递给Makefile.PL/Build.PL而不是INSTALL_BASE/ --install-base。