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

Nicole Scherer bionica2007-perl em yahoo.com
Quinta Janeiro 30 04:36:37 PST 2014


Obrigada Stanislaw e Aureliano!

Aureliano, a bioinformática está tomada por mulheres :-) Já foste no X-Meeting?

Stanislaw,

como
 gestora do cluster, meu objetivo é deixar para o usuário o sistema 
pronto para que ele possa instalar seus módulos localmente sem ter que 
fazer acrobacias. Eu já instalei o local::lib no sistema como root, 
então não seria necessário que o usuário instalasse novamente, correto? 
Ou ele precisaria fazer sua própria instalação?

Quando o usuário faz sua primeira incursão no cpan e realiza a configuração, aparece a seguinte mensagem:

---------------------------------------------------------------------------------------------------------------
local::lib is installed. You must now add the following environment
 variables
to your shell configuration files (or registry, if you are on Windows) and
then restart your command line shell and CPAN before installing modules:


Would you like me to append that to /home/hpcst06/.bashrc now? [yes] 

---------------------------------------------------------------------------------------------------------------

Porém, como podes ver, o "following environment variables" está vazio e nenhuma modificação é feita no .bashrc

Esta etapa é que deveria definir as tais variáveis de ambiente. Não entendo por que não está funcionando.
Desta forma, a única solução seria mesmo acrescentar estas linhas ao .profile a força.

Uma
 opção que tenho é criar toda a árvore de diretórios do perl e do cpan e
 colocar no /etc/skel para ser criada junto com o usuário, mas talvez 
isso seja demais, não?

Qual o objetivo de instalar o App::cpanminus? 
A partir daí o usuário deve
 usar cpanm ao invés de cpan?

Outra dúvida, se eu não instalar o 
local::lib nos nós do cluster (só instalei no frontend), pode dar 
problema na hora de executar os programas em paralelo? Digo, o 
local::lib só é chamado na instalação de módulos e na configuração do 
ambiente local, não é usado na execução dos módulos, certo? O home do 
usuário é montado em cada nó durante a execução, então o perl vai 
executar com as variáveis de ambiente já definidas pelo usuário, então 
não vai precisar executar o local::lib, certo?


Obrigada pela ajuda!


Abraços,
Nicole




Em Quinta-feira, 30 de Janeiro de 2014 8:38, Aureliano Guedes <guedes_1000 em hotmail.com> escreveu:
 
Caraca. Complexo.
O melhor, foi ver a pela primeira vez uma mulher na bioinformatica.
Hello colega bioinformata.

Stanislaw Pusep <creaktive em gmail.com> escreveu:


Olá Nicole!
Já passei por situação semelhante à sua, quando não podia atualizar o Perl default do sistema e a opção foi instalar um Perl mais atualizado avulso no /usr/local. Para sempre usar o Perl do /usr/local, 3 medidas foram tomadas:

1. export PATH=/usr/local/bin:$PATH

2. Os shebangs de todos os scripts executáveis do projeto foram modificados de:

#!/usr/bin/perl

para:

#!/usr/bin/env perl

3. local::lib foi utilizado para CPAN "desovar" no $HOME. O local::lib requer uma intervenção do .profile do sistema, para inicializar o environment apropriadamente. Seguem os passos para instalar o local::lib dessa forma.

3.1. Download do local::lib:

$ wget http://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000004.tar.gz
$ tar xzvf local-lib-2.000004.tar.gz
$ cd local-lib-2.000004/

3.2. Instalação do local::lib:

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

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

$ cat << PROFILE >> $HOME/.profile
eval \$(perl -I\$HOME/perl5/lib/perl5/ -Mlocal::lib)
PROFILE
$

A idéia aqui é que rodar "perl -I$HOME/perl5/lib/perl5/ -Mlocal::lib" retorna para STDOUT as tais das variáveis de ambiente que fazem o Perl buscar instalação dos módulos em um lugar específico ($HOME). Pode simplesmente colar essas variáveis direto no .profile, ou (como demonstrado acima) rodar eval do output do Perl.

3.4. Carregar a configuração:

. $HOME/.profile

3.5. Prosseguindo com a configuração/teste do CPAN e do cpanm (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

Boa sorte!



2014-01-29 Nicole Scherer <bionica2007-perl em yahoo.com>

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
>
>
>
>
>
>_______________________________________________
>Rio-pm mailing list
>Rio-pm em pm.org
>http://mail.pm.org/mailman/listinfo/rio-pm
>


_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm

_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20140130/5448a9ba/attachment-0001.html>


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