sysd.org
6jun/112

Perl e módulos na $HOME

Mas, por quê?!

Qual o sentido de alguém instalar os módulos dentro do seu $HOME? Normalmente, uma das duas:

  1. Você não tem permissão suficiente para instalar no próprio sistema (você está mexendo num servidor ou coisa do tipo);
  2. Você está desenvolvendo a bagaça, e quer manter a versão bleeding edge só para você.

Bom, se for o 2-o caso, existe o tal do perlbrew.

Mas eu gosto das instalações locais e as uso desde '97. E o local::lib foi uma mão na roda e tanto! Então, vamos lá:

Passo-a-passo:

Download do local::lib:

curl -LO http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz
tar xzf local-lib-1.008004.tar.gz
cd local-lib-1.008004/

Instalação do local::lib:

perl Makefile.PL --bootstrap=$HOME/perl5
make
make test
make install

Ativando local::lib na inicialização da shell (Bash):

cat << PROFILE >> $HOME/.profile

export PERL_MM_USE_DEFAULT=1
eval \$(perl -I\$HOME/perl5/lib/perl5/ -Mlocal::lib)
PROFILE

Agora, é hora de logoff/logon para quem está acostumado com o Windows, ou então:

. $HOME/.profile

Prosseguindo com a configuração/teste do CPAN (essa configuração faz as dependências serem instaladas automaticamente):

cpan

cpan[1]> o conf prerequisites_policy follow
cpan[2]> o conf commit
cpan[3]> install App::cpanminus
cpan[4]> quit

Enumerando os módulos instalados:

perl -MExtUtils::Installed -E 'chdir $ENV{PERL_LOCAL_LIB_ROOT}; my $i = new ExtUtils::Installed; say for $i->modules'

cpanminus permite atualizar todos de uma vez, de uma maneira eficiente:

perl -MExtUtils::Installed -E 'chdir $ENV{PERL_LOCAL_LIB_ROOT}; my $i = new ExtUtils::Installed; say for $i->modules' | cpanm

Referências:

Comentários (2) Trackbacks (0)
  1. Para atualizar os módulos, recomendo instalar o cpan-outdated[1] e fazer simplesmente:
    cpan-outdated | cpanm

    ;)

    [1] http://search.cpan.org/~tokuhirom/App-cpanoutdated-0.16/bin/cpan-outdated

  2. É mais completo, inclusive, pois (pelo que vi) contempla os módulos instalados no sistema! Muito boa, valeu :D


Leave a comment

Sem trackbacks