whitespace cleanup
[p5sagit/local-lib.git] / lib / POD2 / PT_BR / local / lib.pod
CommitLineData
e681beb3 1=encoding utf8
2
5863e79d 3=head1 NAME
e681beb3 4
c38c8621 5local::lib~[pt_br] - crie e use um diretório lib/ local para módulos perl com PERL5LIB
e681beb3 6
7=head1 SINOPSE
8
9No código -
10
11 use local::lib; # configura um lib local em ~/perl5
12
13 use local::lib '~/foo'; # idem, mas ~/foo
14
15 # Ou...
16 use FindBin;
17 use local::lib "$FindBin::Bin/../suporte"; # bibliotecas de suporte locais à aplicação
18
19Pela linha de comando (shell) -
20
21 # Instala o LWP e suas dependências não encontradas no diretório '~/perl5'
22 perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
23
24 # Apenas exibe alguns comandos úteis para a shell
25 $ perl -Mlocal::lib
c4e3c83b 26 export PERL_MB_OPT='--install_base /home/username/perl5'
27 export PERL_MM_OPT='INSTALL_BASE=/home/username/perl5'
28 export PERL5LIB='/home/username/perl5/lib/perl5/i386-linux:/home/username/perl5/lib/perl5'
29 export PATH="/home/username/perl5/bin:$PATH"
e681beb3 30
31=head2 A técnica de 'bootstrapping'
32
33Uma forma comum de instalar o local::lib é usando o que é conhecido como
34técnica de "bootstrapping". É uma boa abordagem caso seu administrador de
35sistemas não tenha instalado o local::lib. Nesse caso, você precisará
36instalar o local::lib em seu diretório de usuário.
37
c38c8621 38Caso você tenha privilégios de administrador, ainda assim deverá
39configurar suas variáveis de ambiente, como discutido no passo 4, abaixo.
40Sem elas, você ainda instalará módulos no CPAN do sistema e seus scripts
41Perl não utilizarão o caminho para o lib/ que você definiu com o local::lib.
e681beb3 42
43Por padrão, o local::lib instala os módulos do CPAN e a si próprio em ~/perl5.
44
45Usuários do Windows devem ler L</Diferenças ao usar esse módulo em Win32>.
46
471. Baixe e descompacte o local::lib do CPAN (procure por "Download" na página
48do CPAN sobre o local::lib). Faça isso como um usuário comum, não como root
49ou administrador. Descompacte o arquivo em seu diretório de usuário ou em
50qualquer outro local conveniente.
51
522. Execute isso:
53
54 perl Makefile.PL --bootstrap
55
56Caso o sistema pergunte se deve configurar tudo que puder automaticamente,
57você provavelmente deve responder que sim (yes).
58
59Para instalar o local::lib em um diretório que não o padrão, você precisará
60especificá-lo ao chamar o bootstrap, da seguinte forma:
61
62 perl Makefile.PL --bootstrap=~/foo
63
643. Execute isso: (local::lib assume que você possui o comando 'make'
65instalado em seu sistema)
66
67 make test && make install
68
694. Agora precisamos configurar as variáveis de ambiente apropriadas para
70que o Perl use nosso recém-criado diretório lib/. Caso esteja usando bash
71ou outra shell Bourne, você pode fazer isso adicionando a seguinte linha
72em seu script de inicialização da shell:
73
74 echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
75
76Caso esteja usando a shell C, pode fazer da seguinte forma:
77
78 /bin/csh
79 echo $SHELL
80 /bin/csh
81 perl -I$HOME/perl5/lib/perl5 -Mlocal::lib >> ~/.cshrc
82
83Caso tenha passado para o bootstrap um diretório que não o padrão, você
84precisará indicá-lo na chamada ao local::lib, dessa forma:
85
86 echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc
87
c38c8621 88Após atualizar seu arquivo de configuração da shell, certifique-se de
89processá-lo novamente para obter as modificações em sua shell atual.
90Shells Bourne usam C<. ~/.bashrc> para isso, enquanto shells C
91usam C<source ~/.cshrc>.
e681beb3 92
93Se estiver em uma máquina lenta ou operando com grandes limitações de
94espaço em disco, você pode desativar a geração automática de manpages a
95partir do POD ao instalar módulos. Para isso, basta passar o argumento
96C<--no-manpages> durante o bootstrap:
97
98 perl Makefile.PL --bootstrap --no-manpages
99
100Para evitar ter que fazer vários bootstraps para vários ambientes de
101módulos Perl na mesma conta de usuário - por exemplo se você usa o
102local::lib para desenvolver diferentes aplicativos independentes -
103você pode utilizar uma única instalação bootstrap do local::lib para
104instalar módulos em diretórios diferentes da seguinte forma:
105
106 cd ~/meudir1
107 perl -Mlocal::lib=./
108 eval $(perl -Mlocal::lib=./) ### Para configurar o ambiente apenas nessa shell
109 printenv ### Veja que o ~/meudir1 está na PERL5LIB
110 perl -MCPAN -e install ... ### Os módulos que quiser
111 cd ../meudir2
112 ... REPITA ...
113
c38c8621 114Para múltiplos ambientes destinados a múltiplos aplicativos, você pode
115precisar incluir uma versão modificada das instruções de C<< use FindBin >>
116no exemplo "No código" acima. Caso tenha feito algo como o que foi descrito
117acima, terá um conjunto de módulos Perl em C<< ~/meudir1/lib >>. Caso
118tenha um script em C<< ~/meudir1/scripts/meuscript.pl >>, você precisará
119indicar a ele onde encontrar os módulos que instalou para ele
120em C<< ~/meudir1/lib >>.
e681beb3 121
122Em C<< ~/meudir1/scripts/meuscript.pl >>:
123
124 use strict;
125 use warnings;
126 use local::lib "$FindBin::Bin/.."; ### aponta para ~/meudir1 e o local::lib acha o lib/
127 use lib "$FindBin::Bin/../lib"; ### aponta para ~/meudir1/lib
128
129Coloque isso antes de qualquer bloco BEGIN { ... } que precise dos módulos instalados.
130
131=head2 Diferenças ao usar esse módulo em Win32
132
133Para configurar as variáveis de ambiente apropriadas para sua sessão atual
134do C<CMD.exe>, você pode fazer assim:
135
136 C:\>perl -Mlocal::lib
c4e3c83b 137 set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5
e681beb3 138 set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5
139 set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread
140 set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%
8522f4d5 141
e681beb3 142 ### Para configurar o ambiente apenas dessa shell
143 C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat
144 ### em vez de $(perl -Mlocal::lib=./)
145
146Caso queira que as configurações do ambiente persistam, você precisará
147adicioná-las em Painel de Controle -> Sistema, ou usar o L<App::local::lib::Win32Helper>.
148
149O "~" é transformado no diretório do perfil do usuário (o diretório com o
150nome do usuário dentro de "Documents and Settings" (Windows XP ou anterior)
151ou "Usuários" (Windows Vista e mais recentes)) a menos que $ENV{HOME} exista.
152Após isso, o nome do diretório é encurtado e os subdiretórios são criados
153(o que significa que o diretório deve existir).
154
155=head1 MOTIVAÇÃO
156
157A versão de um pacote Perl na sua máquina nem sempre é a que você precisa.
158Obviamente, a melhor coisa a fazer seria atualizá-la para a versão desejada.
159No entanto, você pode estar em uma situação que o impede de fazer isso.
160Talvez você não tenha privilégios de administrador do sistema; ou talvez
161esteja usando um sistema de gerenciamento de pacotes como o do Debian,
162e ainda não exista um pacote disponível na versão desejada.
163
c38c8621 164local::lib resolve esse problema possibilitando a criação de seu próprio
e681beb3 165diretório de pacotes Perl obtidos do CPAN (em sistemas multi-usuário, isso
166normalmente fica dentro do diretório de seu usuário). A instalação do Perl
167no sistema permanece inalterada; você simplesmente chama o Perl com opções
168especiais para que ele use os pacotes em seu diretório local em vez dos
169pacotes do sistema. O local::lib organiza as coisas para que versões dos
170pacotes Perl instalados localmente tenham precedência sobre as do sistema.
171
172Caso esteja usando um sistema de gerenciamento de pacote (como em sistemas
173Debian), não precisará se preocupar com conflitos entre o Debian e o CPAN.
174Sua versão local dos pacotes será instalada em um diretório completamente
175diferente das versões instaladas pelo gerenciador de pacotes do sistema.
176
177=head1 DESCRIÇÃO
178
179Este módulo oferece uma forma rápida e conveniente para criar um repositório
180de módulos locais ao usuário, dentro do diretório do mesmo. Ele também monta
181e exibe para o usuário uma lista de variáveis de ambiente utilizando a
182sintaxe da shell atual do usuário (conforme especificado pela variável
183de ambiente C<SHELL>), pronta para ser adicionada diretamente no arquivo
184de configuração da shell.
185
186Generalizando, o local::lib permite a criação e uso de um diretório contendo
187módulos Perl fora do C<@INC> do Perl. Isso facilita a produção de aplicações
188com uma versão específica de determinado módulo, ou coleção de módulos.
189Também é útil quando o mantenedor de um módulo não aplicou determinado patch
190que você precisa para seu aplicativo.
191
192Durante o C<import>, o local::lib define valores apropriados para as
193seguintes variáveis de ambiente:
194
195=over 4
196
c4e3c83b 197=item PERL_MB_OPT
e681beb3 198
199=item PERL_MM_OPT
200
201=item PERL5LIB
202
203=item PATH
204
205valores serão anexados ao PATH, em vez de substituí-lo.
206
207=back
208
209Esses valores são então disponibilizados para referência por qualquer
210outro código após o C<import>.
211
212=head1 CRIANDO UM CONJUNTO AUTO-CONTIDO DE MÓDULOS
213
214Veja L<lib::core::only|lib::core::only> para uma maneira de fazer isso - mas
215note que há uma série de ressalvas na abordagem, e a melhor forma é sempre
216fazer o 'build' contra uma versão limpa do perl (i.e. com 'site' e 'vendor'
217o mais vazios possível).
218
219=head1 MÉTODOS
220
a949ebcd 221=head2 ensure_dir_structure_for
e681beb3 222
223=over 4
224
b41e7884 225=item Argumentos: $caminho_do_diretorio
a949ebcd 226
b41e7884 227=item Valor de Retorno: Nenhum
e681beb3 228
229=back
230
231Tenta criar o caminho fornecido, e todos os diretórios superiores necessários. Gera uma exceção em caso de falha.
232
233=head2 print_environment_vars_for
234
235=over 4
236
b41e7884 237=item Argumentos: $caminho_do_diretorio
a949ebcd 238
b41e7884 239=item Valor de Retorno: Nenhum
e681beb3 240
241=back
242
243Exibe na saída padrão as variáveis listadas acima, devidamente ajustadas
244para utilizar o caminho fornecido como diretório base.
245
a949ebcd 246=head2 build_environment_vars_for
247
248=over 4
249
b41e7884 250=item Argumentos: $caminho_do_diretorio, $interpolar
a949ebcd 251
b41e7884 252=item Valor de Retorno: %variaveis_de_ambiente
a949ebcd 253
254=back
255
b41e7884 256Retorna hash contendo as variáveis de ambiente listadas acima, devidamente
257ajustadas para utilizar o caminho fornecido como diretório base.
258
e681beb3 259=head2 setup_env_hash_for
260
261=over 4
262
b41e7884 263=item Argumentos: $caminho_do_diretorio
a949ebcd 264
b41e7884 265=item Valor de Retorno: Nenhum
e681beb3 266
267=back
268
269Constrói as chaves no C<%ENV> para o caminho fornecido, chamando
270C<build_environment_vars_for>.
271
272=head2 install_base_perl_path
273
274=over 4
275
b41e7884 276=item Argumentos: $caminho_do_diretorio
a949ebcd 277
b41e7884 278=item Valor de Retorno: $caminho_base_de_instalacao
e681beb3 279
280=back
281
282Retorna um caminho de diretório indicando onde instalar os módulos Perl
283para essa instalação local de bibliotecas. Adiciona os diretórios C<lib>
284e C<perl5> ao final do caminho fornecido.
285
286=head2 install_base_arch_path
287
288=over 4
289
b41e7884 290=item Argumentos: $caminho_do_diretorio
a949ebcd 291
b41e7884 292=item Valor de Retorno: $caminho_base_de_instalacao_arch
e681beb3 293
294=back
295
296Retorna um caminho de diretório indicando onde instalar os módulos Perl
297de arquiteturas específicas para essa instalação local de bibliotecas.
298Baseia-se no valor de retorno do método L</install_base_perl_path>,
299adicionando o valor de C<$Config{archname}>.
300
301=head2 install_base_bin_path
302
303=over 4
304
b41e7884 305=item Argumentos: $caminho_do_diretorio
a949ebcd 306
b41e7884 307=item Valor de Retorno: $caminho_base_de_instalacao_bin
e681beb3 308
309=back
310
311Retorna um caminho de diretório indicando onde instalar programas executáveis
312para essa instalação local de bibliotecas. Baseia-se no valor de retorno do
313método L</install_base_perl_path>, adicionando o diretório C<bin>.
314
e681beb3 315=head2 resolve_empty_path
316
317=over 4
318
b41e7884 319=item Argumentos: $caminho_do_diretorio
a949ebcd 320
b41e7884 321=item Valor de Retorno: $caminho_base_de_instalacao
e681beb3 322
323=back
324
325Cria e retorna o caminho de diretório raiz em que a instalação local de
326módulos deve ser feita. O padrão é C<~/perl5>.
327
328=head2 resolve_home_path
329
330=over 4
331
b41e7884 332=item Argumentos: $caminho_do_diretorio
a949ebcd 333
b41e7884 334=item Valor de Retorno: $caminho_para_home
e681beb3 335
336=back
337
338Procura pelo diretório padrão (home) do usuário. Caso esteja instalado,
339utiliza o C<File::HomeDir> para isso. Gera uma exceção caso não encontre
340resultado definitivo.
341
342=head2 resolve_relative_path
343
344=over 4
345
b41e7884 346=item Argumentos: $caminho_do_diretorio
a949ebcd 347
b41e7884 348=item Valor de Retorno: $caminho_absoluto
e681beb3 349
350=back
351
352Transforma o caminho fornecido em um caminho absoluto.
353
354=head2 resolve_path
355
356=over 4
357
b41e7884 358=item Argumentos: $caminho_do_diretorio
a949ebcd 359
b41e7884 360=item Valor de Retorno: $caminho_absoluto
e681beb3 361
362=back
363
364Invoca os seguintes métodos em sequência, passando o resultado do método
365anterior para o seguinte, na tentativa de descobrir onde configurar o
366ambiente para a instalação local de bibliotecas: L</resolve_empty_path>,
367L</resolve_home_path>, L</resolve_relative_path>. Passa o caminho de
368diretório fornecido para L</resolve_empty_path> que retorna um resultado
369que é passado para L</resolve_home_path>, que então tem seu resultado
370passado para L</resolve_relative_path>. O resultado dessa chamada final
371é então retornado pelo L</resolve_path>.
372
373=head1 UM AVISO SOBRE UNINST=1
374
375Tenha cuidado ao usar o local::lib em conjunto com "make install UNINST=1".
376A idéia dessa opção é desinstalar a versão anterior de um módulo antes de
377instalar a mais recente. No entanto ela não possui uma verificação de
378segurança de que a versão antiga e a nova referem-se ao mesmo diretório.
379Usada em combinação com o local::lib, você pode potencialmente apagar uma
380versão globalmente acessível de um módulo e instalar a versão mais nova
381no diretório local. Apenas utilize "make install UNINST=1" junto com o
382local::lib se você entende essas possíveis consequências.
383
384=head1 LIMITAÇÕES
385
386As ferramentas auxiliares do perl não conseguem lidar com nomes de
387diretórios contendo espaços, então não é possível fazer seu bootstrap
388do local::lib em um diretório com espaços. O que você pode fazer é mover
389seu local::lib para um diretório com espaços B<após> ter instalado todos
390os módulos dentro dele. Mas esteja ciente que você não poderá atualizar
391ou instalar outros módulos do CPAN nesse diretório local após a mudança.
392
393A detecção da shell é relativamente básica. Neste momento, qualquer coisa
394com csh no nome será tratada como a C shell ou compatível, e todo o resto
395será tratado como Bourne, exceto em sistemas Win32. Caso a variável de
396ambiente C<SHELL> não esteja disponível, assumiremos tratar-se de uma
397shell compatível com a Bourne.
398
399A técnica de bootstrap é um hack e usará o CPAN.pm para o ExtUtils::MakeMaker
400mesmo que você tenha o CPANPLUS instalado.
401
402Destrói qualquer valor pré-existente nas variáveis de ambiente PERL5LIB,
c4e3c83b 403PERL_MM_OPT e PERL_MB_OPT.
e681beb3 404
405Provavelmente deveria auto-configurar o CPAN caso isso ainda não tenha
406sido feito.
407
408Correções (patches) são muito bem-vindos para quaisquer dos itens acima.
409
410Em sistemas Win32, não há uma forma de escrever no registro as variáveis
411de ambiente criadas, para que elas persistam a uma reinicialização.
412
413=head1 SOLUÇÃO DE PROBLEMAS
414
415Se você configurou o local::lib para instalar módulos do CPAN em algum lugar
416do seu 'home', e mais tarde tentou instalar um módulo fazendo C<cpan -i
417Foo::Bar>, mas ele falhou com um erro como: C<Warning: You do not have
418permissions to install into /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux at
419/usr/lib64/perl5/5.8.8/Foo/Bar.pm> e em algum lugar no seu log de instalação
420houver um erro dizendo C<'INSTALL_BASE' is not a known MakeMaker parameter
421name>, então você de alguma forma perdeu seu ExtUtils::MakeMaker atualizado.
422
423Para remediar a situação, execute novamente o procedimento de bootstrap
424descrito acima.
425
426Então, execute C<rm -r ~/.cpan/build/Foo-Bar*>
427
428Finalmente, execute novamente o C<cpan -i Foo::Bar> e ele deve instalar
429sem problemas.
430
431=head1 AMBIENTE
432
433=over 4
434
435=item SHELL
436
437=item COMSPEC
438
439O local::lib procura pela variável de ambiente C<SHELL> do usuário ao
440processar e exibir os comandos a serem adicionados no arquivo de
441configuração da shell.
442
443Em sistemas Win32, C<COMSPEC> também será examinado.
444
445=back
446
447=head1 SUPORTE
448
449IRC:
450
451 Acesse #local-lib em irc.perl.org.
452
453=head1 AUTOR DA TRADUÇÃO
454
1313d3bf 455Breno G. de Oliveira, C<< <garu at cpan.org> >>, após ter perdido uma aposta
456para o L<Getty|http://search.cpan.org/~getty/> durante a Copa de 2010.
457
e681beb3 458
459=head1 COPYRIGHT
460
c38c8621 461Copyright (c) 2007 - 2010 L<local::lib/"AUTHOR">
462e L<local::lib/"CONTRIBUTORS"> do local::lib como listados em L<local::lib>.
e681beb3 463
464=head1 LICENÇA
465
466Esta biblioteca é software livre e pode ser distribuída sob os mesmo termos
467do perl.
468