我以为我有它工作。
我有一个完全私有版本的Perl 5.16(私有我的意思是我的主目录本地),以及CPAN模块的私有地方。我按照http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html上的说明进行了调整(根据其略微过时的情况进行调整),声称完全回避了对local :: lib的需求。我使用上面提到的instrux安装的cpanm来安装Cache :: Memcached :: Fast.pm,并成功运行了一个使用该模块的Perl程序。
今天它没有用。
Can't locate Cache/Memcached/Fast.pm in @INC (@INC contains:
/Users/chap/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.1/darwin-2level
/Users/chap/perl5/perlbrew/perls/perl-5.16.1/lib/site_perl/5.16.
/Users/chap/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1/darwin-2level
/Users/chap/perl5/perlbrew/perls/perl-5.16.1/lib/5.16.1 .) at ./memget line 11.
一些故障排除:
/Users/chap$ perlbrew use
Currently using perl-5.16.1
...甜
/Users/chap$ which perl
/Users/chap/perl5/perlbrew/perls/perl-5.16.1/bin/perl
...真棒。
/Users/chap$ perlbrew switch perl-5.16.1
/Users/chap$ cpanm --interactive -v App::cpanoutdated
cpanm (App::cpanminus) 1.5014 on perl 5.012004 built for darwin-thread-multi-2level
Work directory is /Users/chap/.cpanm/work/1350175791.76873
You have make /usr/bin/make
You have LWP 6.03
You have /usr/bin/tar: bsdtar 2.8.3 - libarchive 2.8.3
You have /usr/bin/unzip
Searching App::cpanoutdated on cpanmetadb ...
!
! Can't write to /Library/Perl/5.12 and /usr/local/bin: Installing modules to /Users/chap/perl5
! To turn off this warning, you have to do one of the following:
! - run me as a root or with --sudo option (to install to /Library/Perl/5.12 and /usr/local/bin)
! - Configure local::lib your existing local::lib in this shell to set PERL_MM_OPT etc.
! - Install local::lib by running the following commands
!
! cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
!
Checking if you have ExtUtils::MakeMaker 6.31 ... Yes (6.62)
Checking if you have ExtUtils::Install 1.46 ... Yes (1.55)
App::cpanoutdated is up to date. (0.23)
哦,哦。为什么系统Perl ???
答案 0 :(得分:1)
如果您跳过或执行了第6步(每个perl设置'cpanm'),那么您可能正在运行以前随系统perl一起安装的cpanm,因此它想要在系统目录中写入。
perlbrew的最新版本有一个'install-cpanm'命令,可以在任何perl之外的特殊位置安装cpanm。这样,您就不必为每个酿造的perl安装cpanm。这可能就是你所需要的。
答案 1 :(得分:1)
我建议你查看cpanm可执行文件的源代码。
您的cpanm
命令可能包含#!/usr/bin/perl
的shebang。在这种情况下,perlbrew switch
或perlbrew use
无法更改perl的版本以调用cpanm命令。 (当然,除非你一直像perl /usr/bin/cpanm
那样运行它。
如果您按curl -o cpanm http://cpanmin.us
或perlbrew install-cpanm
进行安装,则应该包含一个名为/usr/bin/env perl
的shebang,可以动态切换。