[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