Почему модуль, установленный `cpanm`, не распознается? - PullRequest
4 голосов
/ 20 сентября 2010

Я установил perl-5.12.2, используя perlbrew:

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 но он пустой (я понятия не имею, означает ли это что-то).

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Попробуйте это пошаговое руководство , уделяя пристальное внимание шагам 7 и 8 (и, возможно, 9).

2 голосов
/ 20 сентября 2010

Что показывает 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 должен указывать на Perl, на который вы переключились в perlbrew:

/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, тогда у вас есть $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:
...