我使用 perlbrew 安装了 perl-5.12.2:

perlbrew install perl-5.12.2 -D=usethreads -D=useithreads -D=uselargefiles -f

然后我切换到这个版本并使用 IPC::System::Simple 安装 cpanm

但是,当我尝试运行我的脚本时,我得到:
Can't locate IPC/System/Simple.pm in @INC (@INC contains: /home/dave/workspace/proj1/scripts/bin/../lib /home/dave/src/bioperl-live /home/dave/perl5/perlbrew/perls/perl-5.12.2/lib/site_perl/5.12.2/x86_64-linux-thread-multi /home/dave/perl5/perlbrew/perls/perl-5.12.2/lib/site_perl/5.12.2 /home/dave/perl5/perlbrew/perls/perl-5.12.2/lib/5.12.2/x86_64-linux-thread-multi /home/dave/perl5/perlbrew/perls/perl-5.12.2/lib/5.12.2 .) at /home/dave/workspace/proj1/scripts/bin/../lib/createLayout.pm line 14.

我还找到了以下目录:~/perl5/lib/perl5/x86_64-linux-thread-multi/auto/IPC/System/Simple但它是空的(我不知道这是否意味着什么)。

最佳答案

命令行中的 which cpanm 显示什么?对你来说,它应该报告:

/home/dave/perl5/perlbrew/bin/cpanm

如果没问题,那么 ls -l /home/dave/perl5/perlbrew/bin/cpanm 显示什么?它应该指向:
cpanm -> /home/dave/perl5/perlbrew/perls/current/bin/cpanm

最后 ls -l /Users/barry/perl5/perlbrew/perls/current 应该指向您在 perlbrew 中切换到的 Perl:
/home/dave/perl5/perlbrew/perls/current -> perl-5.12.2

这三个都必须是这样,否则有什么问题。

如果不是,那么一个可能的问题是 cpanm 指向另一个已安装的 Perl。您需要在 cpanm 下为每个版本的 perl 安装 perlbrew :
perlbrew switch perl-5.12.2
curl -L http://cpanmin.us | perl - App::cpanminus

现在,如果 which cpanm 仍然没有显示 perlbrew 路径,那么您的 $PATH(或等效)文件中存在 .bash_profile 优先级问题。这可以通过确保您的 perlbrew 行...
source /home/dave/perl5/perlbrew/etc/bashrc

... 在配置文件中位于任何其他 export $PATH 行之后。

重新登录后,您可以通过执行 echo $PATH 来确认这是正确的,并且您应该在路径字符串的开头(左侧)看到 perlbrew ,即。像这样:
/home/dave/perl5/perlbrew/bin:/home/dave/perl5/perlbrew/perls/current/bin:/usr/bin:/bin:/usr/local/bin:

关于perl - 为什么 `cpanm` 安装的模块不能被识别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3753723/

10-11 18:53