在服务器上有多个版本的perl 时,在安装某个perl 程序的时候经常会出现如下类似问题
/usr/bin/perl: symbol lookup error: /opt/perl5/lib/perl5/x86_64-linux-thread-multi/auto/List/Util/Util.so: undefined symbol: Perl_xs_handshake
Failed to run /home/xxzhang/workplace/software/Shimmer/shimmer.pl --counts!
这是由于多个版本的perl 使用的编译包不一致,但是在调用时,又加载了另一个Perl版本的模块,从而导致出错,所以需要将另一个版本的模块路径禁掉。
由于系统自带的Perl 版本较低,所以一直使用自己安装的高版本的perl,但是,系统的perl 的lib 路径我们无法修改;
perl -V 查看@INC
@INC:
/home/xxx/perl5/lib/perl5/x86_64-linux-thread-multi
/home/xxx/perl5/lib/perl5
/share/perl/lib/perl5/x86_64-linux-thread-multi
/share/perl/lib/perl5
/usr/share/perl5
查看一下:/etc/profile
export PERL5LIB=/share/perl/lib/perl5:/usr/share/perl5:${PERL5LIB}
/share/perl/lib/perl5,/usr/share/perl5这些路径我们都无法修改,所以只好修改自己的配置文件
PERL5LIB="/home/xxx/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
修改为
PERL5LIB="/home/xxx/perl5/lib/perl5"; export PERL5LIB;