【问题标题】:Why won't a module installed by `cpanm` be recognized?为什么 `cpanm` 安装的模块不能被识别?
【发布时间】:2010-09-20 17:08:04
【问题描述】:

我使用 perlbrew 安装了 perl-5.12.2:

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

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

但是,当我尝试运行我的脚本时,我得到:

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 但它是空的(我不知道这是否意味着什么)。

【问题讨论】:

    标签: perl module perlbrew


    【解决方案1】:

    尝试this step-by-step guide,密切注意第 7 步和第 8 步(以及可选的第 9 步)。

    【讨论】:

    • +1 谢谢。尚未解决(请参阅我对 draegtun 的评论),但希望在路上......
    【解决方案2】:

    命令行中的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。你需要为perlbrew下的每个版本的perl安装cpanm

    perlbrew switch perl-5.12.2
    curl -L http://cpanmin.us | perl - App::cpanminus
    

    现在,如果which cpanm 仍然没有显示perlbrew 路径,那么您的.bash_profile(或同等文件)文件中有$PATH 优先级问题。这可以通过确保您的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:
    

    【讨论】:

    • 你的第一个问题我失败了。 which cpanm 显示 /usr/bin/cpanm。我按照 CanSpice 链接的指南进行操作,除了我无法运行cpan-outdated(好像它没有安装一样)一切都很好。我想也许cpanm 没有正确安装(尽管我在安装之前确实切换了),因为我什至没有/home/dave/perl5/perlbrew/perls/current/bin/cpanm。但是,第三件事似乎很好:/home/dave/perl5/perlbrew/perls/current -> perl-5.12.2.
    • 我现在注意到该指南与您的一项说明之间存在差异。比较您的curl -L http://cpanmin.us | perl - --sudo App::cpanminus 和指南的curl -L http://cpanmin.us | perl - App::cpanminus。我不能 sudo,因为我的用户不在管理员组中。有关系吗? p.s.我可以su...
    • --sudo 在 perlbrew 下安装时不需要(已编辑)。
    • 回复:failed first question。是的,你提到的一切都指向没有在你通过perlbrew 安装的 perl 5.12.2 下安装cpanm,而是选择了/usr/bin/cpanm,它将连接到/usr/bin/perl,这是它的 perl会安装你的IPC::System::Simple for(你机器上的每个 perl 都有自己的 CPAN 目录)。
    猜你喜欢
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多