Приватный perlbrew и CPAN не работают. Еще. Снова
Я думал, у меня это работает.
У меня есть полностью закрытая версия Perl 5.16 (под частной я имею в виду локальный для моего домашнего каталога) и личное место для модулей CPAN. Я следовал инструкциям по адресу http://blog.fox.geek.nz/2010/09/installing-multiple-perls-with.html (с учетом его небольшой устаревшей информации), который утверждает, что полностью обходит необходимость локальная:: Lib. Я использовал cpanm, который установил вышеупомянутый instrux, для установки 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???
2 ответа
Если вы пропустили или пошутили на шаге 6 (настройте "cpanm" для каждого perl), возможно, вы запускаете cpanm, который ранее был установлен с системным perl, поэтому он хочет записывать в системные каталоги.
В последних версиях perlbrew есть команда 'install-cpanm', которая устанавливает cpanm в специальном месте вне любого perl. Таким образом, вам не нужно устанавливать cpanm для каждого созданного вами perl. Это может быть то, что вам нужно.
Я предлагаю вам проверить исходный код исполняемого файла cpanm.
Есть шанс, что ваш cpanm
Команда содержит Шебанг из #!/usr/bin/perl
, В этом случае, perlbrew switch
или же perlbrew use
не может изменить версию perl для вызова команды cpanm. (Если, конечно, вы не запускаете его как perl /usr/bin/cpanm
все время.
Если вы делаете установку по curl -o cpanm http://cpanmin.us
или же perlbrew install-cpanm
он должен содержать шебанг, который говорит /usr/bin/env perl
, который может быть переключен динамически.