[SP-pm] [CPAN]
Luis Motta Campos
luismottacampos em yahoo.co.uk
Segunda Janeiro 29 03:05:06 PST 2007
On Jan 26, 2007, at 2:42 PM, André Garcia Carneiro wrote:
>> Apenas para o registro, quando vocês fizerem isso, tentem usar
>> perl -e 'print "@CPAN", $/'
>
> O resultado da linha acima foi (VAZIO)
Claro que foi.
Eu errei o nome da variável.
É @INC...
> Sim... porque ele diz que a package List::Compare precisa ser
> instalada. QUando eu tento instalar apenas ela, esses erros não
> ocorrem, embora a package não seja instalada. Mas no caso estava
> tentando instalar Chess::Game, e quando ele termina a instalação de
> List::Compare e finaliza a Chess:Game, ele não acha List::Compare e
> me retorna esses erros....
Manda para mim o resultado de um
cpan> test List::Compare
por favor?
> "gentil"... essa foi boa! ;)
Foi! Ele não te disse nenhum palavrão... ;-)
>> Claro. Até onde eu entendi, parece que você não instalou o tal
>> pacote. Rode $(find $(perl -e 'print "@INC"' ) -type f -name
>> Compare.pm)
>
> find $(perl -e 'print "@INC"' ) -type f -name Compare.pm
> /usr/lib/perl5/5.8.7/File/Compare.pm
> ./.cpan/build/List-Compare-0.33/lib/List/Compare.pm
> ./.cpan/build/List-Compare-0.33/blib/lib/List/Compare.pm
> ./perl/lib/perl5/site_perl/5.8.7/List/Compare.pm
>
> Estranho não??? Está lá mas não está... olha o que acontece quando
> eu faço perl -e 'use List::Compare;'
>
> Can't locate List/Compare.pm in @INC (@INC contains: /usr/lib/
> perl5/5.8.7/i486-linux /usr/lib/perl5/5.8.7
> /usr/lib/perl5/site_perl/5.8.7/i486-linux /usr/lib/perl5/site_perl/
> 5.8.7 /usr/lib/perl5/site_perl .) at -e line 1.
> BEGIN failed--compilation aborted at -e line 1.
>
> ESSE É O VERDADEIRO PROBLEMA, SACOU? Repare que em @INC está
> incluído /usr/lib/perl5/5.8.7
> Então o que está errado????
Sim, está o /usr/lib/perl5/5.8.7, mas o teu List::Compare foi
instalado localmente em ./perl/lib/perl5/site_perl/5.8.7/List/
Compare.pm, o que não parece o lugar certo... ;-)
Confere para saber se este treco está MESMO sob um dos diretórios
listados no seu @INC, ele não parece. Lembra que o Perl não usa o
@INC recursivamente. Por isso, não adianta ele estar listado, mas um
nível abaixo, por exemplo, que não vai resolver nada.
> makepl_arg [PREFIX=~/perl]
Me parece que você pediu para instalar tudo localmente, de acordo
com esta configuração do seu CPAN Shell. Acho que não é bem isso que
você quer, já que não mudou o seu PERL5LIB para incluir o diretório "/
root/perl/"... ;-)
Acho que agora a gente chegou no ponto, certo?
Parece que o seu problema todo é o seguinte:
Você configurou o seu CPAN Shell para instalar coisas em lugares
não-padrão, mas não acrescentou estes lugares ao @INC. Desta forma, o
CPAN até consegue instalar as bibliotecas de primeiro nível, as que
não tem dependências. Mas falha calamitosamente quando tenta instalar
as outras, por que não consegue achar as bibliotecas das quais elas
dependem (não estão visíveis no @INC).
Soluções possíveis:
1. cpan> o conf makepl_arg ""
cpan> o commit
cpan> reload index
cpan> install Chess::Game
2. Edite seu /etc/bash.bashrc e acrescente um export assim:
export PERL5LIB=/root/perl/lib/perl5/5.8.7:/root/perl/lib/
perl5/5.8.7/site_perl
Qualquer das duas formas vai resolver seu problema.
Espero que agora funcione.
Putamplexos!
--
Luis Motta Campos is software engineer,
perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm