[Rio-pm] Configuração de usuário não root no cpan & Perl Roll em Rocks Cluster

Nicole Scherer bionica2007-perl em yahoo.com
Quarta Janeiro 29 10:43:55 PST 2014


Boa tarde, queridos Mongers,

eu não queria importuná-los com problemas simples, mas após três dias batendo a cabeça e vasculhando fóruns na internet sem solução para algumas das perguntas, recorro a vocês. Vou tentar explicar a novela.

Montamos um cluster HPC para pesquisa usando o Rocks 6.1 (http://www.rocksclusters.org/) -- um tipo de linux que instala outro linux em todos os nós do cluster e gerencia tudo isso. Novidade pra mim, mas funciona. Esse Rocks instala os chamados Rolls, entre eles o próprio SO (neste caso o RHEL6) e outros Rolls úteis, como SGE, Ganglia, Web-Server, Bio, Perl (4.14.2) entre outros. Estes Rolls são instalados em /opt/ e as vezes coexistem com os binários do SO. Desta forma, tenho duas versões de Perl:

- a do sistema (RHEL6):

$ /usr/bin/perl -v
This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi


- e a do Rocks:
$ /opt/perl/bin/perl -v
This is perl 5, version 14, subversion 2
 (v5.14.2) built for x86_64-linux-thread-multi

Cada qual com as suas bibliotecas.

  @INC:
   
 /usr/local/lib64/perl5
    /usr/local/share/perl5
   
 /usr/lib64/perl5/vendor_perl
    /usr/share/perl5/vendor_perl
    /usr/lib64/perl5
   
 /usr/share/perl5
    .
  @INC:
    /opt/perl/lib/site_perl/5.14.2/x86_64-linux-thread-multi
    /opt/perl/lib/site_perl/5.14.2
    /opt/perl/lib/5.14.2/x86_64-linux-thread-multi
   
 /opt/perl/lib/5.14.2
    .



Agora é que começam meus problemas...

Primeiro: Alguém já teve experiência com duas instalações coexistentes de Perl? Posso ter problemas de funcionamento no SO se eu mover  o  /usr/bin/perl e criar um link do  /opt/perl/bin/perl para   /usr/bin/perl  (uma vez que as shebang dos scripts costuma ter este endereço). Colocar simplesmente /opt/perl/bin no início do $PATH pode não ser a solução. 



O CPAN só está instalado na versão do Rocks, o que me motiva mais a deixá-lo como default.
Como a maioria dos usuários não terão privilégios de root e além disso, qualquer instalação no sistema operacional tem que ser espelhada para todos os nós, a melhor opção para instalar pacotes é na home dos usuários, concordam? Então eu quero deixar tudo o mais fácil possível para que os usuários instalem os pacotes desejados. Como não teremos acesso direto à internet usei o minicpan para criar um mirror em uma pasta compartilhada com minha máquina local. Configurei o urllist do cpan pra ela e ficou tudo ok.

Agora esbarrei em um problema que não estou achando resposta fácil.

Quando executo o cpan pela primeira vez como usuário comum, da forma mais automática possível, ele cria, como esperado o arquivo MyConfig.pm e toda a estrutura de diretórios no home do usuário. Ele executa quase tudo com perfeição, substituindo o endereço default pelo do usuário em QUASE todos os itens, menos em prefs_dir.


[hpcst06 em crab ~]$ grep cpan .cpan/CPAN/MyConfig.pm
  'build_dir' => q[/home/hpcst06/.cpan/build],
 
 'cpan_home' => q[/home/hpcst06/.cpan],
  'histfile' => q[/home/hpcst06/.cpan/histfile],
 
 'keep_source_where' => q[/home/hpcst06/.cpan/sources],
  'prefs_dir' => q[/export/cpan/cpan/prefs],


(O default cpan_home é /export/cpan/cpan )
[hpcst06 em crab ~]$ grep cpan /opt/perl/lib/5.14.2/CPAN/Config.pm
  'build_dir' => q[/export/cpan/cpan/build],
  'cpan_home' => q[/export/cpan/cpan],
  'histfile' => q[/export/cpan/cpan/histfile],
  'keep_source_where' => q[/export/cpan/cpan/sources],
  'prefs_dir' => q[/export/cpan/cpan/prefs],



Claro que o usuário pode executar
>o conf prefs_dir /home/hpcst06/.cpan/prefs
para alterar esta variável, mas concordam que deveria ter sido automático.
Alguém já passou por isto?

Procurei o erro em FirstTime.pm, mas não consegui localizar algo que me chamasse a atenção.
Exatamente igual ao que tenho no Ubuntu, e que funciona normalmente.


- Tendo corrigido manualmente o prefs_dir, segui tentando instalar localmente algum pacote.
Aí eu admito uma grande falta de conhecimento da minha parte, mas tentei entender o que os tutoriais na internet e fiquei
 perdida. Devo usar direto o cpan? (já que na configuração ele me pergunta se eu quero que use local::lib)
What approach do you want?  (Choose 'local::lib', 'sudo' or
 'manual')
 [local::lib] 
Ou devo usar sempre 
$ perl -MCPAN -Mlocal::lib -e 'CPAN::install(Acme::Time::Baby)'
?
(tudo bem, posso
 colocar esta linha no tutorial, vai assustar os usuários, mas funciona)



- Rodando
[hpcst06 em crab ~]$ perl -MCPAN -Mlocal::lib -e 'CPAN::install(Acme::Time::Baby)'

- deu tudo certo.
[...]
Result: PASS
  ABIGAIL/Acme-Time-Baby-2010090301.tar.gz
  /usr/bin/make test -- OK
Running make install
Prepending /home/hpcst06/.cpan/build/Acme-Time-Baby-2010090301-wJGXda/blib/arch /home/hpcst06/.cpan/build/Acme-Time-Baby-2010090301-wJGXda/blib/lib to
 PERL5LIB for 'install'
Installing /home/hpcst06/perl5/lib/perl5/Acme/Time/Baby.pm
Installing /home/hpcst06/perl5/man/man3/Acme::Time::Baby.3
Appending installation info to
 /home/hpcst06/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod
  ABIGAIL/Acme-Time-Baby-2010090301.tar.gz
  /usr/bin/make install  -- OK



- Agora, tentei instalar o Data::Printer (Oi Breno!) pela mesma estratégia e não consegui. Pode ser que não tenha a ver com a estratégia.


Test Summary Report
-------------------
t/05-obj.t                (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/06-obj2.t               (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/07-sort.t               (Wstat: 512 Tests: 1 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in
 TAP output
t/25-weak.t               (Wstat: 512 Tests: 8 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=54, Tests=258,  4 wallclock secs ( 0.19 usr  0.09 sys +  2.82 cusr  0.40 csys =  3.50 CPU)
Result: FAIL
Failed 4/54 test programs. 0/258 subtests failed.
make: *** [test_dynamic] Error 255
  GARU/Data-Printer-0.35.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports GARU/Data-Printer-0.35.tar.gz
Running make install
  make test had returned bad status, won't install without force




Desculpem a postagem tão longa. Acabei até solucionando algumas outras dúvidas enquanto tentava descrevê-las aqui.

Abraços a todos,
Nicole Scherer
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20140129/5cab1b5a/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm