Perché non sarà un modulo installato da `cpanm` essere riconosciuto?
Domanda
Ho installato perl-5.12.2 utilizzando perlbrew
:
perlbrew install perl-5.12.2 -D=usethreads -D=useithreads -D=uselargefiles -f
Ho poi passato a questa versione e installato IPC::System::Simple
usando cpanm
.
Tuttavia, quando provo a fare funzionare il mio script ottengo:
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.
Inoltre ho trovato la seguente dir:
~/perl5/lib/perl5/x86_64-linux-thread-multi/auto/IPC/System/Simple
ma è vuota (non ho idea se questo significa qualcosa).
Soluzione
Cosa which cpanm
dalla riga di comando show? Per voi dovrebbe riferire:
/home/dave/perl5/perlbrew/bin/cpanm
Se questo è OK, allora che cosa fa ls -l /home/dave/perl5/perlbrew/bin/cpanm
show? Si dovrebbe puntare:
cpanm -> /home/dave/perl5/perlbrew/perls/current/bin/cpanm
E infine ls -l /Users/barry/perl5/perlbrew/perls/current
deve essere rivolta al Perl sei passato al perlbrew
:
/home/dave/perl5/perlbrew/perls/current -> perl-5.12.2
Tutti e tre di questi deve essere così altrimenti qualcosa non va.
Se la sua probabile problema allora non è che cpanm
sta puntando ad un altro Perl installato. È necessario avere cpanm
installati per ogni versione di Perl in perlbrew
:
perlbrew switch perl-5.12.2
curl -L http://cpanmin.us | perl - App::cpanminus
Ora, se which cpanm
ancora non mostra il percorso perlbrew
allora avete un problema di precedenza $PATH
nel vostro .bash_profile
(o equivalente) file. Questo può essere risolto facendo in modo che il vostro perlbrew
linea ...
source /home/dave/perl5/perlbrew/etc/bashrc
... nel file del profilo è dopo tutte le altre linee export $PATH
.
Dopo aver di nuovo ri-login in voi può confermare che questo è giusto facendo echo $PATH
e si dovrebbe vedere perlbrew
all'inizio (a sinistra) della stringa di percorso, vale a dire. qualcosa di simile a questo:
/home/dave/perl5/perlbrew/bin:/home/dave/perl5/perlbrew/perls/current/bin:/usr/bin:/bin:/usr/local/bin:
Altri suggerimenti
questa guida passo-passo , prestando attenzione ai punti 7 e 8 (e facoltativamente 9).