[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 06:01:46 PST 2014


Oi Stanislaw,

era exatamente isso que eu queria evitar, ter que invocar o local::lib pelo profile, pois assim, teria que instalá-lo em todos os nós do cluster, e isso seria uma outra acrobacia, devido a forma que o rocks funciona.
Vou pensar um uma estratégia para colocar no .bashrc do usuário durante a configuração, como deveria ter sido feito pelo FirstTime.pm, mas não foi. Ainda não entendi por que não está funcionando.

De toda forma, muito obrigada!!!!

Abraços,
Nicole




Em Quinta-feira, 30 de Janeiro de 2014 11:46, Stanislaw Pusep <creaktive em gmail.com> escreveu:
 
Isso mesmo; na primeira vez em que "perl -Mlocal::lib" roda ele cria os diretórios necessários. Se salvar as variáveis de ambiente, não precisa rodar nunca mais.
Entretanto, as variáveis serão diferentes para cada usuário. Para melhorar a automação, basta colocar no final do /etc/profile (sim, o do sistema): "eval $(perl -Mlocal::lib)". Desse jeito os usuários automagicamente terão local::lib configurado ao fazer o login :)



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

Obrigada, Stanislaw!
>
>Então o usuário só precisará rodar o "perl -Mlocal::lib" uma única vez e colocar este output no .bashrc ou .profile, certo? Tendo feito isso, ele nunca mais precisará invocar o local::lib, ou terá que fazer isto toda vez que for instalar novos pacotes? Com as variáveis de ambiente definidas ainda preciso do local::lib?
>
>Abraços,
>Nicole
>
>
>
>
>
>
>
>Em Quinta-feira, 30 de Janeiro de 2014 11:06, Stanislaw Pusep <creaktive em gmail.com> escreveu:
> 
>Olá Nicole! O processo que eu descrevi é o de bootstrapping; se o Perl do seu /opt/perl já tiver local::lib instalado como root, não precisa dessa etapa.
>O que acontece se você rodar "perl -Mlocal::lib"?
>Aqui, por exemplo, aparece:
>
>
>PATH="/Users/stas/perl5/bin${PATH+:}$PATH";
>export PATH;
>PERL5LIB="/Users/stas/perl5/lib/perl5${PERL5LIB+:}$PERL5LIB";
>export PERL5LIB;
>PERL_LOCAL_LIB_ROOT="/Users/stas/perl5${PERL_LOCAL_LIB_ROOT+:}$PERL_LOCAL_LIB_ROOT";
>export PERL_LOCAL_LIB_ROOT;
>PERL_MB_OPT="--install_base \"/Users/stas/perl5\"";
>export PERL_MB_OPT;
>PERL_MM_OPT="INSTALL_BASE=/Users/stas/perl5";
>export PERL_MM_OPT;
>
>
>Se você colar o output produzido no seu sistema para o .bashrc/.profile, o Perl "se sentirá em casa" no $HOME :)
>O cpanminus é opcional; única coisa absolutamente necessária é que "perl -Mlocal::lib" seja rodado para inicializar o $HOME/perl5, e que as variáveis de ambiente estejam definidas do jeito que o "perl -Mlocal::lib" diz.
>
>
>
>2014-01-30 Nicole Scherer <bionica2007-perl em yahoo.com>
>
>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
>>
>>
>>_______________________________________________
>>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/3dfbfb51/attachment-0001.html>


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