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 diretório lib/ local para módulos
7 perl com PERL5LIB
8
10 No código -
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 à aplicação
19
20 Pela linha de comando (shell) -
21
22 # Instala o LWP e suas dependências não encontradas no diretório '~/perl5'
23 perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
24
25 # Apenas exibe alguns comandos úteis 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 técnica de 'bootstrapping'
33 Uma forma comum de instalar o local::lib é usando o que é conhecido
34 como técnica de "bootstrapping". É uma boa abordagem caso seu
35 administrador de sistemas não tenha instalado o local::lib. Nesse caso,
36 você precisará instalar o local::lib em seu diretório de usuário.
37
38 Caso você tenha privilégios de administrador, ainda assim deverá
39 configurar suas variáveis de ambiente, como discutido no passo 4,
40 abaixo. Sem elas, você ainda instalará módulos no CPAN do sistema e
41 seus scripts Perl não utilizarão o caminho para o lib/ que você definiu
42 com o local::lib.
43
44 Por padrão, o local::lib instala os módulos do CPAN e a si próprio em
45 ~/perl5.
46
47 Usuários do Windows devem ler "Diferenças ao usar esse módulo em
48 Win32".
49
50 1. Baixe e descompacte o local::lib do CPAN (procure por "Download" na
51 página do CPAN sobre o local::lib). Faça isso como um usuário comum,
52 não como root ou administrador. Descompacte o arquivo em seu diretório
53 de usuário 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, você provavelmente deve responder que sim (yes).
61
62 Para instalar o local::lib em um diretório que não o padrão, você
63 precisará especificá-lo ao chamar o bootstrap, da seguinte forma:
64
65 perl Makefile.PL --bootstrap=~/foo
66
67 3. Execute isso: (local::lib assume que você possui o comando 'make'
68 instalado em seu sistema)
69
70 make test && make install
71
72 4. Agora precisamos configurar as variáveis de ambiente apropriadas
73 para que o Perl use nosso recém-criado diretório lib/. Caso esteja
74 usando bash ou outra shell Bourne, você pode fazer isso adicionando a
75 seguinte linha em seu script de inicializaçã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 diretório que não o padrão, você
87 precisará indicá-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 Após atualizar seu arquivo de configuração da shell, certifique-se de
92 processá-lo novamente para obter as modificaçõ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 máquina lenta ou operando com grandes limitações de
97 espaço em disco, você pode desativar a geração automática de manpages a
98 partir do POD ao instalar módulos. Para isso, basta passar o argumento
99 "--no-manpages" durante o bootstrap:
100
101 perl Makefile.PL --bootstrap --no-manpages
102
103 Para evitar ter que fazer vários bootstraps para vários ambientes de
104 módulos Perl na mesma conta de usuário - por exemplo se você usa o
105 local::lib para desenvolver diferentes aplicativos independentes - você
106 pode utilizar uma única instalação bootstrap do local::lib para
107 instalar módulos em diretórios 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 está na PERL5LIB
113 perl -MCPAN -e install ... ### Os módulos que quiser
114 cd ../meudir2
115 ... REPITA ...
116
117 Para múltiplos ambientes destinados a múltiplos aplicativos, você pode
118 precisar incluir uma versão modificada das instruções de "use FindBin"
119 no exemplo "No código" acima. Caso tenha feito algo como o que foi
120 descrito acima, terá um conjunto de módulos Perl em "~/meudir1/lib".
121 Caso tenha um script em "~/meudir1/scripts/meuscript.pl", você
122 precisará indicar a ele onde encontrar os módulos que instalou para ele
123 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 módulos instalados.
134
135 Diferenças ao usar esse módulo em Win32
136 Para configurar as variáveis de ambiente apropriadas para sua sessão
137 atual do "CMD.exe", você 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 configurações do ambiente persistam, você precisará
150 adicioná-las em Painel de Controle -> Sistema, ou usar o
151 App::local::lib::Win32Helper.
152
153 O "~" é transformado no diretório do perfil do usuário (o diretório com
154 o nome do usuário dentro de "Documents and Settings" (Windows XP ou
155 anterior) ou "Usuários" (Windows Vista e mais recentes)) a menos que
156 $ENV{HOME} exista. Após isso, o nome do diretório é encurtado e os
157 subdiretórios são criados (o que significa que o diretório deve
158 existir).
159
161 A versão de um pacote Perl na sua máquina nem sempre é a que você
162 precisa. Obviamente, a melhor coisa a fazer seria atualizá-la para a
163 versão desejada. No entanto, você pode estar em uma situação que o
164 impede de fazer isso. Talvez você não tenha privilégios de
165 administrador do sistema; ou talvez esteja usando um sistema de
166 gerenciamento de pacotes como o do Debian, e ainda não exista um pacote
167 disponível na versão desejada.
168
169 local::lib resolve esse problema possibilitando a criação de seu
170 próprio diretório de pacotes Perl obtidos do CPAN (em sistemas
171 multi-usuário, isso normalmente fica dentro do diretório de seu
172 usuário). A instalação do Perl no sistema permanece inalterada; você
173 simplesmente chama o Perl com opções especiais para que ele use os
174 pacotes em seu diretório local em vez dos pacotes do sistema. O
175 local::lib organiza as coisas para que versões dos pacotes Perl
176 instalados localmente tenham precedência sobre as do sistema.
177
178 Caso esteja usando um sistema de gerenciamento de pacote (como em
179 sistemas Debian), não precisará se preocupar com conflitos entre o
180 Debian e o CPAN. Sua versão local dos pacotes será instalada em um
181 diretório completamente diferente das versões instaladas pelo
182 gerenciador de pacotes do sistema.
183
185 Este módulo oferece uma forma rápida e conveniente para criar um
186 repositório de módulos locais ao usuário, dentro do diretório do mesmo.
187 Ele também monta e exibe para o usuário uma lista de variáveis de
188 ambiente utilizando a sintaxe da shell atual do usuário (conforme
189 especificado pela variável de ambiente "SHELL"), pronta para ser
190 adicionada diretamente no arquivo de configuração da shell.
191
192 Generalizando, o local::lib permite a criação e uso de um diretório
193 contendo módulos Perl fora do @INC do Perl. Isso facilita a produção de
194 aplicações com uma versão específica de determinado módulo, ou coleção
195 de módulos. Também é útil quando o mantenedor de um módulo não aplicou
196 determinado patch que você precisa para seu aplicativo.
197
198 Durante o "import", o local::lib define valores apropriados para as
199 seguintes variáveis de ambiente:
200
201 PERL_MB_OPT
202 PERL_MM_OPT
203 PERL5LIB
204 PATH
205 valores serão anexados ao PATH, em vez de substituí-lo.
206
207 Esses valores são então disponibilizados para referência por qualquer
208 outro código após o "import".
209
211 Veja lib::core::only para uma maneira de fazer isso - mas note que há
212 uma série de ressalvas na abordagem, e a melhor forma é sempre fazer o
213 'build' contra uma versão limpa do perl (i.e. com 'site' e 'vendor' o
214 mais vazios possível).
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 diretórios superiores
222 necessários. Gera uma exceçã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 saída padrão as variáveis listadas acima, devidamente
229 ajustadas para utilizar o caminho fornecido como diretório 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 variáveis de ambiente listadas acima,
236 devidamente ajustadas para utilizar o caminho fornecido como diretório
237 base.
238
239 setup_env_hash_for
240 Argumentos: $caminho_do_diretorio
241 Valor de Retorno: Nenhum
242
243 Constrói 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 diretório indicando onde instalar os módulos Perl
251 para essa instalação local de bibliotecas. Adiciona os diretórios "lib"
252 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 diretório indicando onde instalar os módulos Perl
259 de arquiteturas específicas para essa instalação local de bibliotecas.
260 Baseia-se no valor de retorno do método "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 diretório indicando onde instalar programas
268 executáveis para essa instalação local de bibliotecas. Baseia-se no
269 valor de retorno do método "install_base_perl_path", adicionando o
270 diretório "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 diretório raiz em que a instalação local de
277 módulos deve ser feita. O padrão é "~/perl5".
278
279 resolve_home_path
280 Argumentos: $caminho_do_diretorio
281 Valor de Retorno: $caminho_para_home
282
283 Procura pelo diretório padrão (home) do usuário. Caso esteja instalado,
284 utiliza o "File::HomeDir" para isso. Gera uma exceção caso não encontre
285 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 métodos em sequência, passando o resultado do
298 método anterior para o seguinte, na tentativa de descobrir onde
299 configurar o ambiente para a instalação local de bibliotecas:
300 "resolve_empty_path", "resolve_home_path", "resolve_relative_path".
301 Passa o caminho de diretório fornecido para "resolve_empty_path" que
302 retorna um resultado que é passado para "resolve_home_path", que então
303 tem seu resultado passado para "resolve_relative_path". O resultado
304 dessa chamada final é então retornado pelo "resolve_path".
305
307 Tenha cuidado ao usar o local::lib em conjunto com "make install
308 UNINST=1". A idéia dessa opção é desinstalar a versão anterior de um
309 módulo antes de instalar a mais recente. No entanto ela não possui uma
310 verificação de segurança de que a versão antiga e a nova referem-se ao
311 mesmo diretório. Usada em combinação com o local::lib, você pode
312 potencialmente apagar uma versão globalmente acessível de um módulo e
313 instalar a versão mais nova no diretório local. Apenas utilize "make
314 install UNINST=1" junto com o local::lib se você entende essas
315 possíveis consequências.
316
318 As ferramentas auxiliares do perl não conseguem lidar com nomes de
319 diretórios contendo espaços, então não é possível fazer seu bootstrap
320 do local::lib em um diretório com espaços. O que você pode fazer é
321 mover seu local::lib para um diretório com espaços após ter instalado
322 todos os módulos dentro dele. Mas esteja ciente que você não poderá
323 atualizar ou instalar outros módulos do CPAN nesse diretório local após
324 a mudança.
325
326 A detecção da shell é relativamente básica. Neste momento, qualquer
327 coisa com csh no nome será tratada como a C shell ou compatível, e todo
328 o resto será tratado como Bourne, exceto em sistemas Win32. Caso a
329 variável de ambiente "SHELL" não esteja disponível, assumiremos tratar-
330 se de uma shell compatível com a Bourne.
331
332 A técnica de bootstrap é um hack e usará o CPAN.pm para o
333 ExtUtils::MakeMaker mesmo que você tenha o CPANPLUS instalado.
334
335 Destrói qualquer valor pré-existente nas variáveis de ambiente
336 PERL5LIB, PERL_MM_OPT e PERL_MB_OPT.
337
338 Provavelmente deveria auto-configurar o CPAN caso isso ainda não tenha
339 sido feito.
340
341 Correções (patches) são muito bem-vindos para quaisquer dos itens
342 acima.
343
344 Em sistemas Win32, não há uma forma de escrever no registro as
345 variáveis de ambiente criadas, para que elas persistam a uma
346 reinicialização.
347
349 Se você configurou o local::lib para instalar módulos do CPAN em algum
350 lugar do seu 'home', e mais tarde tentou instalar um módulo 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 instalação houver um erro dizendo "'INSTALL_BASE' is not a known
356 MakeMaker parameter name", então você de alguma forma perdeu seu
357 ExtUtils::MakeMaker atualizado.
358
359 Para remediar a situação, execute novamente o procedimento de bootstrap
360 descrito acima.
361
362 Entã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 variável de ambiente "SHELL" do usuário
371 ao processar e exibir os comandos a serem adicionados no arquivo de
372 configuração da shell.
373
374 Em sistemas Win32, "COMSPEC" também será examinado.
375
377 IRC:
378
379 Acesse #local-lib em irc.perl.org.
380
382 Breno G. de Oliveira, "<garu at cpan.org>", após 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 é software livre e pode ser distribuída sob os mesmo
391 termos do perl.
392
393
394
395perl v5.32.1 2021-01-27 POD2::PT_BR::local::lib(3)