1POD2::PT_BR::local::libU(s3e)r Contributed Perl DocumentaPtOiDo2n::PT_BR::local::lib(3)
2
3
4
6 local::lib~[pt_br] - crie e use um diretorio lib/ local para modulos
7 perl com PERL5LIB
8
10 No codigo -
11
12 use local::lib; # configura um lib local em ~/perl5
13
14 use local::lib '~/foo'; # idem, mas ~/foo
15
16 # Ou...
17 use FindBin;
18 use local::lib "$FindBin::Bin/../suporte"; # bibliotecas de suporte locais a aplicaca~o
19
20 Pela linha de comando (shell) -
21
22 # Instala o LWP e suas dependencias na~o encontradas no diretorio '~/perl5'
23 perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
24
25 # Apenas exibe alguns comandos uteis para a shell
26 $ perl -Mlocal::lib
27 export PERL_MB_OPT='--install_base /home/username/perl5'
28 export PERL_MM_OPT='INSTALL_BASE=/home/username/perl5'
29 export PERL5LIB='/home/username/perl5/lib/perl5/i386-linux:/home/username/perl5/lib/perl5'
30 export PATH="/home/username/perl5/bin:$PATH"
31
32 A tecnica de 'bootstrapping'
33 Uma forma comum de instalar o local::lib e usando o que e conhecido
34 como tecnica de "bootstrapping". E uma boa abordagem caso seu
35 administrador de sistemas na~o tenha instalado o local::lib. Nesse
36 caso, voce precisara instalar o local::lib em seu diretorio de usuario.
37
38 Caso voce tenha privilegios de administrador, ainda assim devera
39 configurar suas variaveis de ambiente, como discutido no passo 4,
40 abaixo. Sem elas, voce ainda instalara modulos no CPAN do sistema e
41 seus scripts Perl na~o utilizara~o o caminho para o lib/ que voce
42 definiu com o local::lib.
43
44 Por padra~o, o local::lib instala os modulos do CPAN e a si proprio em
45 ~/perl5.
46
47 Usuarios do Windows devem ler "Diferencas ao usar esse modulo em
48 Win32".
49
50 1. Baixe e descompacte o local::lib do CPAN (procure por "Download" na
51 pagina do CPAN sobre o local::lib). Faca isso como um usuario comum,
52 na~o como root ou administrador. Descompacte o arquivo em seu diretorio
53 de usuario ou em qualquer outro local conveniente.
54
55 2. Execute isso:
56
57 perl Makefile.PL --bootstrap
58
59 Caso o sistema pergunte se deve configurar tudo que puder
60 automaticamente, voce provavelmente deve responder que sim (yes).
61
62 Para instalar o local::lib em um diretorio que na~o o padra~o, voce
63 precisara especifica-lo ao chamar o bootstrap, da seguinte forma:
64
65 perl Makefile.PL --bootstrap=~/foo
66
67 3. Execute isso: (local::lib assume que voce possui o comando 'make'
68 instalado em seu sistema)
69
70 make test && make install
71
72 4. Agora precisamos configurar as variaveis de ambiente apropriadas
73 para que o Perl use nosso recem-criado diretorio lib/. Caso esteja
74 usando bash ou outra shell Bourne, voce pode fazer isso adicionando a
75 seguinte linha em seu script de inicializaca~o da shell:
76
77 echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >>~/.bashrc
78
79 Caso esteja usando a shell C, pode fazer da seguinte forma:
80
81 /bin/csh
82 echo $SHELL
83 /bin/csh
84 perl -I$HOME/perl5/lib/perl5 -Mlocal::lib >> ~/.cshrc
85
86 Caso tenha passado para o bootstrap um diretorio que na~o o padra~o,
87 voce precisara indica-lo na chamada ao local::lib, dessa forma:
88
89 echo 'eval $(perl -I$HOME/foo/lib/perl5 -Mlocal::lib=$HOME/foo)' >>~/.bashrc
90
91 Apos atualizar seu arquivo de configuraca~o da shell, certifique-se de
92 processa-lo novamente para obter as modificaco~es em sua shell atual.
93 Shells Bourne usam ". ~/.bashrc" para isso, enquanto shells C usam
94 "source ~/.cshrc".
95
96 Se estiver em uma maquina lenta ou operando com grandes limitaco~es de
97 espaco em disco, voce pode desativar a geraca~o automatica de manpages
98 a partir do POD ao instalar modulos. Para isso, basta passar o
99 argumento "--no-manpages" durante o bootstrap:
100
101 perl Makefile.PL --bootstrap --no-manpages
102
103 Para evitar ter que fazer varios bootstraps para varios ambientes de
104 modulos Perl na mesma conta de usuario - por exemplo se voce usa o
105 local::lib para desenvolver diferentes aplicativos independentes - voce
106 pode utilizar uma unica instalaca~o bootstrap do local::lib para
107 instalar modulos em diretorios diferentes da seguinte forma:
108
109 cd ~/meudir1
110 perl -Mlocal::lib=./
111 eval $(perl -Mlocal::lib=./) ### Para configurar o ambiente apenas nessa shell
112 printenv ### Veja que o ~/meudir1 esta na PERL5LIB
113 perl -MCPAN -e install ... ### Os modulos que quiser
114 cd ../meudir2
115 ... REPITA ...
116
117 Para multiplos ambientes destinados a multiplos aplicativos, voce pode
118 precisar incluir uma versa~o modificada das instruco~es de "use
119 FindBin" no exemplo "No codigo" acima. Caso tenha feito algo como o que
120 foi descrito acima, tera um conjunto de modulos Perl em
121 "~/meudir1/lib". Caso tenha um script em
122 "~/meudir1/scripts/meuscript.pl", voce precisara indicar a ele onde
123 encontrar os modulos que instalou para ele em "~/meudir1/lib".
124
125 Em "~/meudir1/scripts/meuscript.pl":
126
127 use strict;
128 use warnings;
129 use local::lib "$FindBin::Bin/.."; ### aponta para ~/meudir1 e o local::lib acha o lib/
130 use lib "$FindBin::Bin/../lib"; ### aponta para ~/meudir1/lib
131
132 Coloque isso antes de qualquer bloco BEGIN { ... } que precise dos
133 modulos instalados.
134
135 Diferencas ao usar esse modulo em Win32
136 Para configurar as variaveis de ambiente apropriadas para sua sessa~o
137 atual do "CMD.exe", voce pode fazer assim:
138
139 C:\>perl -Mlocal::lib
140 set PERL_MB_OPT=--install_base C:\DOCUME~1\ADMINI~1\perl5
141 set PERL_MM_OPT=INSTALL_BASE=C:\DOCUME~1\ADMINI~1\perl5
142 set PERL5LIB=C:\DOCUME~1\ADMINI~1\perl5\lib\perl5;C:\DOCUME~1\ADMINI~1\perl5\lib\perl5\MSWin32-x86-multi-thread
143 set PATH=C:\DOCUME~1\ADMINI~1\perl5\bin;%PATH%
144
145 ### Para configurar o ambiente apenas dessa shell
146 C:\>perl -Mlocal::lib > %TEMP%\tmp.bat && %TEMP%\tmp.bat && del %TEMP%\temp.bat
147 ### em vez de $(perl -Mlocal::lib=./)
148
149 Caso queira que as configuraco~es do ambiente persistam, voce precisara
150 adiciona-las em Painel de Controle -> Sistema, ou usar o
151 App::local::lib::Win32Helper.
152
153 O "~" e transformado no diretorio do perfil do usuario (o diretorio com
154 o nome do usuario dentro de "Documents and Settings" (Windows XP ou
155 anterior) ou "Usuarios" (Windows Vista e mais recentes)) a menos que
156 $ENV{HOME} exista. Apos isso, o nome do diretorio e encurtado e os
157 subdiretorios sa~o criados (o que significa que o diretorio deve
158 existir).
159
161 A versa~o de um pacote Perl na sua maquina nem sempre e a que voce
162 precisa. Obviamente, a melhor coisa a fazer seria atualiza-la para a
163 versa~o desejada. No entanto, voce pode estar em uma situaca~o que o
164 impede de fazer isso. Talvez voce na~o tenha privilegios de
165 administrador do sistema; ou talvez esteja usando um sistema de
166 gerenciamento de pacotes como o do Debian, e ainda na~o exista um
167 pacote disponivel na versa~o desejada.
168
169 local::lib resolve esse problema possibilitando a criaca~o de seu
170 proprio diretorio de pacotes Perl obtidos do CPAN (em sistemas
171 multi-usuario, isso normalmente fica dentro do diretorio de seu
172 usuario). A instalaca~o do Perl no sistema permanece inalterada; voce
173 simplesmente chama o Perl com opco~es especiais para que ele use os
174 pacotes em seu diretorio local em vez dos pacotes do sistema. O
175 local::lib organiza as coisas para que verso~es dos pacotes Perl
176 instalados localmente tenham precedencia sobre as do sistema.
177
178 Caso esteja usando um sistema de gerenciamento de pacote (como em
179 sistemas Debian), na~o precisara se preocupar com conflitos entre o
180 Debian e o CPAN. Sua versa~o local dos pacotes sera instalada em um
181 diretorio completamente diferente das verso~es instaladas pelo
182 gerenciador de pacotes do sistema.
183
185 Este modulo oferece uma forma rapida e conveniente para criar um
186 repositorio de modulos locais ao usuario, dentro do diretorio do mesmo.
187 Ele tambem monta e exibe para o usuario uma lista de variaveis de
188 ambiente utilizando a sintaxe da shell atual do usuario (conforme
189 especificado pela variavel de ambiente "SHELL"), pronta para ser
190 adicionada diretamente no arquivo de configuraca~o da shell.
191
192 Generalizando, o local::lib permite a criaca~o e uso de um diretorio
193 contendo modulos Perl fora do @INC do Perl. Isso facilita a produca~o
194 de aplicaco~es com uma versa~o especifica de determinado modulo, ou
195 coleca~o de modulos. Tambem e util quando o mantenedor de um modulo
196 na~o aplicou determinado patch que voce precisa para seu aplicativo.
197
198 Durante o "import", o local::lib define valores apropriados para as
199 seguintes variaveis de ambiente:
200
201 PERL_MB_OPT
202 PERL_MM_OPT
203 PERL5LIB
204 PATH
205 valores sera~o anexados ao PATH, em vez de substitui-lo.
206
207 Esses valores sa~o enta~o disponibilizados para referencia por qualquer
208 outro codigo apos o "import".
209
211 Veja lib::core::only para uma maneira de fazer isso - mas note que ha
212 uma serie de ressalvas na abordagem, e a melhor forma e sempre fazer o
213 'build' contra uma versa~o limpa do perl (i.e. com 'site' e 'vendor' o
214 mais vazios possivel).
215
217 ensure_dir_structure_for
218 Argumentos: $caminho_do_diretorio
219 Valor de Retorno: Nenhum
220
221 Tenta criar o caminho fornecido, e todos os diretorios superiores
222 necessarios. Gera uma exceca~o em caso de falha.
223
224 print_environment_vars_for
225 Argumentos: $caminho_do_diretorio
226 Valor de Retorno: Nenhum
227
228 Exibe na saida padra~o as variaveis listadas acima, devidamente
229 ajustadas para utilizar o caminho fornecido como diretorio base.
230
231 build_environment_vars_for
232 Argumentos: $caminho_do_diretorio, $interpolar
233 Valor de Retorno: %variaveis_de_ambiente
234
235 Retorna hash contendo as variaveis de ambiente listadas acima,
236 devidamente ajustadas para utilizar o caminho fornecido como diretorio
237 base.
238
239 setup_env_hash_for
240 Argumentos: $caminho_do_diretorio
241 Valor de Retorno: Nenhum
242
243 Constroi as chaves no %ENV para o caminho fornecido, chamando
244 "build_environment_vars_for".
245
246 install_base_perl_path
247 Argumentos: $caminho_do_diretorio
248 Valor de Retorno: $caminho_base_de_instalacao
249
250 Retorna um caminho de diretorio indicando onde instalar os modulos Perl
251 para essa instalaca~o local de bibliotecas. Adiciona os diretorios
252 "lib" e "perl5" ao final do caminho fornecido.
253
254 install_base_arch_path
255 Argumentos: $caminho_do_diretorio
256 Valor de Retorno: $caminho_base_de_instalacao_arch
257
258 Retorna um caminho de diretorio indicando onde instalar os modulos Perl
259 de arquiteturas especificas para essa instalaca~o local de bibliotecas.
260 Baseia-se no valor de retorno do metodo "install_base_perl_path",
261 adicionando o valor de $Config{archname}.
262
263 install_base_bin_path
264 Argumentos: $caminho_do_diretorio
265 Valor de Retorno: $caminho_base_de_instalacao_bin
266
267 Retorna um caminho de diretorio indicando onde instalar programas
268 executaveis para essa instalaca~o local de bibliotecas. Baseia-se no
269 valor de retorno do metodo "install_base_perl_path", adicionando o
270 diretorio "bin".
271
272 resolve_empty_path
273 Argumentos: $caminho_do_diretorio
274 Valor de Retorno: $caminho_base_de_instalacao
275
276 Cria e retorna o caminho de diretorio raiz em que a instalaca~o local
277 de modulos deve ser feita. O padra~o e "~/perl5".
278
279 resolve_home_path
280 Argumentos: $caminho_do_diretorio
281 Valor de Retorno: $caminho_para_home
282
283 Procura pelo diretorio padra~o (home) do usuario. Caso esteja
284 instalado, utiliza o "File::HomeDir" para isso. Gera uma exceca~o caso
285 na~o encontre resultado definitivo.
286
287 resolve_relative_path
288 Argumentos: $caminho_do_diretorio
289 Valor de Retorno: $caminho_absoluto
290
291 Transforma o caminho fornecido em um caminho absoluto.
292
293 resolve_path
294 Argumentos: $caminho_do_diretorio
295 Valor de Retorno: $caminho_absoluto
296
297 Invoca os seguintes metodos em sequencia, passando o resultado do
298 metodo anterior para o seguinte, na tentativa de descobrir onde
299 configurar o ambiente para a instalaca~o local de bibliotecas:
300 "resolve_empty_path", "resolve_home_path", "resolve_relative_path".
301 Passa o caminho de diretorio fornecido para "resolve_empty_path" que
302 retorna um resultado que e passado para "resolve_home_path", que enta~o
303 tem seu resultado passado para "resolve_relative_path". O resultado
304 dessa chamada final e enta~o retornado pelo "resolve_path".
305
307 Tenha cuidado ao usar o local::lib em conjunto com "make install
308 UNINST=1". A ideia dessa opca~o e desinstalar a versa~o anterior de um
309 modulo antes de instalar a mais recente. No entanto ela na~o possui uma
310 verificaca~o de seguranca de que a versa~o antiga e a nova referem-se
311 ao mesmo diretorio. Usada em combinaca~o com o local::lib, voce pode
312 potencialmente apagar uma versa~o globalmente acessivel de um modulo e
313 instalar a versa~o mais nova no diretorio local. Apenas utilize "make
314 install UNINST=1" junto com o local::lib se voce entende essas
315 possiveis consequencias.
316
318 As ferramentas auxiliares do perl na~o conseguem lidar com nomes de
319 diretorios contendo espacos, enta~o na~o e possivel fazer seu bootstrap
320 do local::lib em um diretorio com espacos. O que voce pode fazer e
321 mover seu local::lib para um diretorio com espacos apos ter instalado
322 todos os modulos dentro dele. Mas esteja ciente que voce na~o podera
323 atualizar ou instalar outros modulos do CPAN nesse diretorio local apos
324 a mudanca.
325
326 A detecca~o da shell e relativamente basica. Neste momento, qualquer
327 coisa com csh no nome sera tratada como a C shell ou compativel, e todo
328 o resto sera tratado como Bourne, exceto em sistemas Win32. Caso a
329 variavel de ambiente "SHELL" na~o esteja disponivel, assumiremos
330 tratar-se de uma shell compativel com a Bourne.
331
332 A tecnica de bootstrap e um hack e usara o CPAN.pm para o
333 ExtUtils::MakeMaker mesmo que voce tenha o CPANPLUS instalado.
334
335 Destroi qualquer valor pre-existente nas variaveis de ambiente
336 PERL5LIB, PERL_MM_OPT e PERL_MB_OPT.
337
338 Provavelmente deveria auto-configurar o CPAN caso isso ainda na~o tenha
339 sido feito.
340
341 Correco~es (patches) sa~o muito bem-vindos para quaisquer dos itens
342 acima.
343
344 Em sistemas Win32, na~o ha uma forma de escrever no registro as
345 variaveis de ambiente criadas, para que elas persistam a uma
346 reinicializaca~o.
347
349 Se voce configurou o local::lib para instalar modulos do CPAN em algum
350 lugar do seu 'home', e mais tarde tentou instalar um modulo fazendo
351 "cpan -i Foo::Bar", mas ele falhou com um erro como: "Warning: You do
352 not have permissions to install into
353 /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux at
354 /usr/lib64/perl5/5.8.8/Foo/Bar.pm" e em algum lugar no seu log de
355 instalaca~o houver um erro dizendo "'INSTALL_BASE' is not a known
356 MakeMaker parameter name", enta~o voce de alguma forma perdeu seu
357 ExtUtils::MakeMaker atualizado.
358
359 Para remediar a situaca~o, execute novamente o procedimento de
360 bootstrap descrito acima.
361
362 Enta~o, execute "rm -r ~/.cpan/build/Foo-Bar*"
363
364 Finalmente, execute novamente o "cpan -i Foo::Bar" e ele deve instalar
365 sem problemas.
366
368 SHELL
369 COMSPEC
370 O local::lib procura pela variavel de ambiente "SHELL" do usuario
371 ao processar e exibir os comandos a serem adicionados no arquivo de
372 configuraca~o da shell.
373
374 Em sistemas Win32, "COMSPEC" tambem sera examinado.
375
377 IRC:
378
379 Acesse #local-lib em irc.perl.org.
380
382 Breno G. de Oliveira, "<garu at cpan.org>", apos ter perdido uma aposta
383 para o Getty <http://search.cpan.org/~getty/> durante a Copa de 2010.
384
386 Copyright (c) 2007 - 2010 "AUTHOR" in local::lib e "CONTRIBUTORS" in
387 local::lib do local::lib como listados em local::lib.
388
390 Esta biblioteca e software livre e pode ser distribuida sob os mesmo
391 termos do perl.
392
393
394
395perl v5.16.3 2013-02-12 POD2::PT_BR::local::lib(3)