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