到目前为止,我一直在使用系统perl(在Ubuntu 10.10上),我使用local :: lib在我的私有目录〜/ perl5中安装CPAN模块
当我试图使用perlbrew时,似乎他们不了解对方。我使用perlbrew安装perl-5.12.3,但是当我使用perlbrew使用perl-5.12.3切换到它时,我仍然看到由local :: lib设置的PERL5LIB和PERL_MM_OPT。
这不好:
$ cpan XML::Simple /home/gabor/perl5/perlbrew/perls/perl-5.12.3/bin/perl: symbol lookup error: /home/gabor/perl5/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Cwd/Cwd.so: undefined symbol: Perl_Gthr_key_ptr
而
$ which cpan /home/gabor/perl5/perlbrew/perls/perl-5.12.3/bin/cpan
所以它正在使用正确的版本的cpan客户端,但是对于PERL5LIB环境变量,它从错误的地方拾取模块。
perlbrew是否具有一些可编译模式,或者是否需要手动关闭PERL5LIB和PERL_MM_OPT?
解决方法
由于我开始使用perlbrew,所以我停止使用local :: lib进行shell的使用,因为现在我有自己的perl,我有写权限的一切,只是安装到site_perl是更直接的,这让我有不同的版本的每个perl的模块。
我仍然使用local :: lib(或更具体地说,cpanm的-l或-L选项自动设置local :: lib目录),以将应用程序特定的依赖项保留在应用程序目录中。