.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "POD2::PT_BR::local::lib 3" .TH POD2::PT_BR::local::lib 3 "2019-11-14" "perl v5.16.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" local::lib~[pt_br] \- crie e use um direto\*'rio lib/ local para mo\*'dulos perl com PERL5LIB .SH "SINOPSE" .IX Header "SINOPSE" No co\*'digo \- .PP .Vb 1 \& use local::lib; # configura um lib local em ~/perl5 \& \& use local::lib \*(Aq~/foo\*(Aq; # idem, mas ~/foo \& \& # Ou... \& use FindBin; \& use local::lib "$FindBin::Bin/../suporte"; # bibliotecas de suporte locais a\*` aplicac\*,a\*~o .Ve .PP Pela linha de comando (shell) \- .PP .Vb 2 \& # Instala o LWP e suas depende\*^ncias na\*~o encontradas no direto\*'rio \*(Aq~/perl5\*(Aq \& perl \-MCPAN \-Mlocal::lib \-e \*(AqCPAN::install(LWP)\*(Aq \& \& # Apenas exibe alguns comandos u\*'teis para a shell \& $ perl \-Mlocal::lib \& export PERL_MB_OPT=\*(Aq\-\-install_base /home/username/perl5\*(Aq \& export PERL_MM_OPT=\*(AqINSTALL_BASE=/home/username/perl5\*(Aq \& export PERL5LIB=\*(Aq/home/username/perl5/lib/perl5/i386\-linux:/home/username/perl5/lib/perl5\*(Aq \& export PATH="/home/username/perl5/bin:$PATH" .Ve .SS "A te\*'cnica de 'bootstrapping'" .IX Subsection "A te'cnica de 'bootstrapping'" Uma forma comum de instalar o local::lib e\*' usando o que e\*' conhecido como te\*'cnica de \*(L"bootstrapping\*(R". E\*' uma boa abordagem caso seu administrador de sistemas na\*~o tenha instalado o local::lib. Nesse caso, voce\*^ precisara\*' instalar o local::lib em seu direto\*'rio de usua\*'rio. .PP Caso voce\*^ tenha privile\*'gios de administrador, ainda assim devera\*' configurar suas varia\*'veis de ambiente, como discutido no passo 4, abaixo. Sem elas, voce\*^ ainda instalara\*' mo\*'dulos no \s-1CPAN\s0 do sistema e seus scripts Perl na\*~o utilizara\*~o o caminho para o lib/ que voce\*^ definiu com o local::lib. .PP Por padra\*~o, o local::lib instala os mo\*'dulos do \s-1CPAN\s0 e a si pro\*'prio em ~/perl5. .PP Usua\*'rios do Windows devem ler \*(L"Diferenc\*,as ao usar esse mo\*'dulo em Win32\*(R". .PP 1. Baixe e descompacte o local::lib do \s-1CPAN \s0(procure por \*(L"Download\*(R" na pa\*'gina do \s-1CPAN\s0 sobre o local::lib). Fac\*,a isso como um usua\*'rio comum, na\*~o como root ou administrador. Descompacte o arquivo em seu direto\*'rio de usua\*'rio ou em qualquer outro local conveniente. .PP 2. Execute isso: .PP .Vb 1 \& perl Makefile.PL \-\-bootstrap .Ve .PP Caso o sistema pergunte se deve configurar tudo que puder automaticamente, voce\*^ provavelmente deve responder que sim (yes). .PP Para instalar o local::lib em um direto\*'rio que na\*~o o padra\*~o, voce\*^ precisara\*' especifica\*'\-lo ao chamar o bootstrap, da seguinte forma: .PP .Vb 1 \& perl Makefile.PL \-\-bootstrap=~/foo .Ve .PP 3. Execute isso: (local::lib assume que voce\*^ possui o comando 'make' instalado em seu sistema) .PP .Vb 1 \& make test && make install .Ve .PP 4. Agora precisamos configurar as varia\*'veis de ambiente apropriadas para que o Perl use nosso rece\*'m\-criado direto\*'rio lib/. Caso esteja usando bash ou outra shell Bourne, voce\*^ pode fazer isso adicionando a seguinte linha em seu script de inicializac\*,a\*~o da shell: .PP .Vb 1 \& echo \*(Aqeval $(perl \-I$HOME/perl5/lib/perl5 \-Mlocal::lib)\*(Aq >>~/.bashrc .Ve .PP Caso esteja usando a shell C, pode fazer da seguinte forma: .PP .Vb 4 \& /bin/csh \& echo $SHELL \& /bin/csh \& perl \-I$HOME/perl5/lib/perl5 \-Mlocal::lib >> ~/.cshrc .Ve .PP Caso tenha passado para o bootstrap um direto\*'rio que na\*~o o padra\*~o, voce\*^ precisara\*' indica\*'\-lo na chamada ao local::lib, dessa forma: .PP .Vb 1 \& echo \*(Aqeval $(perl \-I$HOME/foo/lib/perl5 \-Mlocal::lib=$HOME/foo)\*(Aq >>~/.bashrc .Ve .PP Apo\*'s atualizar seu arquivo de configurac\*,a\*~o da shell, certifique-se de processa\*'\-lo novamente para obter as modificac\*,o\*~es em sua shell atual. Shells Bourne usam \f(CW\*(C`. ~/.bashrc\*(C'\fR para isso, enquanto shells C usam \f(CW\*(C`source ~/.cshrc\*(C'\fR. .PP Se estiver em uma ma\*'quina lenta ou operando com grandes limitac\*,o\*~es de espac\*,o em disco, voce\*^ pode desativar a gerac\*,a\*~o automa\*'tica de manpages a partir do \s-1POD\s0 ao instalar mo\*'dulos. Para isso, basta passar o argumento \&\f(CW\*(C`\-\-no\-manpages\*(C'\fR durante o bootstrap: .PP .Vb 1 \& perl Makefile.PL \-\-bootstrap \-\-no\-manpages .Ve .PP Para evitar ter que fazer va\*'rios bootstraps para va\*'rios ambientes de mo\*'dulos Perl na mesma conta de usua\*'rio \- por exemplo se voce\*^ usa o local::lib para desenvolver diferentes aplicativos independentes \- voce\*^ pode utilizar uma u\*'nica instalac\*,a\*~o bootstrap do local::lib para instalar mo\*'dulos em direto\*'rios diferentes da seguinte forma: .PP .Vb 7 \& cd ~/meudir1 \& perl \-Mlocal::lib=./ \& eval $(perl \-Mlocal::lib=./) ### Para configurar o ambiente apenas nessa shell \& printenv ### Veja que o ~/meudir1 esta\*' na PERL5LIB \& perl \-MCPAN \-e install ... ### Os mo\*'dulos que quiser \& cd ../meudir2 \& ... REPITA ... .Ve .PP Para mu\*'ltiplos ambientes destinados a mu\*'ltiplos aplicativos, voce\*^ pode precisar incluir uma versa\*~o modificada das instruc\*,o\*~es de \f(CW\*(C`use FindBin\*(C'\fR no exemplo \*(L"No co\*'digo\*(R" acima. Caso tenha feito algo como o que foi descrito acima, tera\*' um conjunto de mo\*'dulos Perl em \f(CW\*(C`~/meudir1/lib\*(C'\fR. Caso tenha um script em \f(CW\*(C`~/meudir1/scripts/meuscript.pl\*(C'\fR, voce\*^ precisara\*' indicar a ele onde encontrar os mo\*'dulos que instalou para ele em \f(CW\*(C`~/meudir1/lib\*(C'\fR. .PP Em \f(CW\*(C`~/meudir1/scripts/meuscript.pl\*(C'\fR: .PP .Vb 4 \& use strict; \& use warnings; \& use local::lib "$FindBin::Bin/.."; ### aponta para ~/meudir1 e o local::lib acha o lib/ \& use lib "$FindBin::Bin/../lib"; ### aponta para ~/meudir1/lib .Ve .PP Coloque isso antes de qualquer bloco \s-1BEGIN\s0 { ... } que precise dos mo\*'dulos instalados. .SS "Diferenc\*,as ao usar esse mo\*'dulo em Win32" .IX Subsection "Diferenc,as ao usar esse mo'dulo em Win32" Para configurar as varia\*'veis de ambiente apropriadas para sua sessa\*~o atual do \f(CW\*(C`CMD.exe\*(C'\fR, voce\*^ pode fazer assim: .PP .Vb 5 \& C:\e>perl \-Mlocal::lib \& set PERL_MB_OPT=\-\-install_base C:\eDOCUME~1\eADMINI~1\eperl5 \& set PERL_MM_OPT=INSTALL_BASE=C:\eDOCUME~1\eADMINI~1\eperl5 \& set PERL5LIB=C:\eDOCUME~1\eADMINI~1\eperl5\elib\eperl5;C:\eDOCUME~1\eADMINI~1\eperl5\elib\eperl5\eMSWin32\-x86\-multi\-thread \& set PATH=C:\eDOCUME~1\eADMINI~1\eperl5\ebin;%PATH% \& \& ### Para configurar o ambiente apenas dessa shell \& C:\e>perl \-Mlocal::lib > %TEMP%\etmp.bat && %TEMP%\etmp.bat && del %TEMP%\etemp.bat \& ### em vez de $(perl \-Mlocal::lib=./) .Ve .PP Caso queira que as configurac\*,o\*~es do ambiente persistam, voce\*^ precisara\*' adiciona\*'\-las em Painel de Controle \-> Sistema, ou usar o App::local::lib::Win32Helper. .PP O \*(L"~\*(R" e\*' transformado no direto\*'rio do perfil do usua\*'rio (o direto\*'rio com o nome do usua\*'rio dentro de \*(L"Documents and Settings\*(R" (Windows \s-1XP\s0 ou anterior) ou \*(L"Usua\*'rios\*(R" (Windows Vista e mais recentes)) a menos que \f(CW$ENV\fR{\s-1HOME\s0} exista. Apo\*'s isso, o nome do direto\*'rio e\*' encurtado e os subdireto\*'rios sa\*~o criados (o que significa que o direto\*'rio deve existir). .SH "MOTIVAC\*,A\*~O" .IX Header "MOTIVAC,A~O" A versa\*~o de um pacote Perl na sua ma\*'quina nem sempre e\*' a que voce\*^ precisa. Obviamente, a melhor coisa a fazer seria atualiza\*'\-la para a versa\*~o desejada. No entanto, voce\*^ pode estar em uma situac\*,a\*~o que o impede de fazer isso. Talvez voce\*^ na\*~o tenha privile\*'gios de administrador do sistema; ou talvez esteja usando um sistema de gerenciamento de pacotes como o do Debian, e ainda na\*~o exista um pacote disponi\*'vel na versa\*~o desejada. .PP local::lib resolve esse problema possibilitando a criac\*,a\*~o de seu pro\*'prio direto\*'rio de pacotes Perl obtidos do \s-1CPAN \s0(em sistemas multi\-usua\*'rio, isso normalmente fica dentro do direto\*'rio de seu usua\*'rio). A instalac\*,a\*~o do Perl no sistema permanece inalterada; voce\*^ simplesmente chama o Perl com opc\*,o\*~es especiais para que ele use os pacotes em seu direto\*'rio local em vez dos pacotes do sistema. O local::lib organiza as coisas para que verso\*~es dos pacotes Perl instalados localmente tenham precede\*^ncia sobre as do sistema. .PP Caso esteja usando um sistema de gerenciamento de pacote (como em sistemas Debian), na\*~o precisara\*' se preocupar com conflitos entre o Debian e o \s-1CPAN.\s0 Sua versa\*~o local dos pacotes sera\*' instalada em um direto\*'rio completamente diferente das verso\*~es instaladas pelo gerenciador de pacotes do sistema. .SH "DESCRIC\*,A\*~O" .IX Header "DESCRIC,A~O" Este mo\*'dulo oferece uma forma ra\*'pida e conveniente para criar um reposito\*'rio de mo\*'dulos locais ao usua\*'rio, dentro do direto\*'rio do mesmo. Ele tambe\*'m monta e exibe para o usua\*'rio uma lista de varia\*'veis de ambiente utilizando a sintaxe da shell atual do usua\*'rio (conforme especificado pela varia\*'vel de ambiente \f(CW\*(C`SHELL\*(C'\fR), pronta para ser adicionada diretamente no arquivo de configurac\*,a\*~o da shell. .PP Generalizando, o local::lib permite a criac\*,a\*~o e uso de um direto\*'rio contendo mo\*'dulos Perl fora do \f(CW@INC\fR do Perl. Isso facilita a produc\*,a\*~o de aplicac\*,o\*~es com uma versa\*~o especi\*'fica de determinado mo\*'dulo, ou colec\*,a\*~o de mo\*'dulos. Tambe\*'m e\*' u\*'til quando o mantenedor de um mo\*'dulo na\*~o aplicou determinado patch que voce\*^ precisa para seu aplicativo. .PP Durante o \f(CW\*(C`import\*(C'\fR, o local::lib define valores apropriados para as seguintes varia\*'veis de ambiente: .IP "\s-1PERL_MB_OPT\s0" 4 .IX Item "PERL_MB_OPT" .PD 0 .IP "\s-1PERL_MM_OPT\s0" 4 .IX Item "PERL_MM_OPT" .IP "\s-1PERL5LIB\s0" 4 .IX Item "PERL5LIB" .IP "\s-1PATH\s0" 4 .IX Item "PATH" .PD valores sera\*~o anexados ao \s-1PATH,\s0 em vez de substitui\*'\-lo. .PP Esses valores sa\*~o enta\*~o disponibilizados para refere\*^ncia por qualquer outro co\*'digo apo\*'s o \f(CW\*(C`import\*(C'\fR. .SH "CRIANDO UM CONJUNTO AUTO-CONTIDO DE MO\*'DULOS" .IX Header "CRIANDO UM CONJUNTO AUTO-CONTIDO DE MO'DULOS" Veja lib::core::only para uma maneira de fazer isso \- mas note que ha\*' uma se\*'rie de ressalvas na abordagem, e a melhor forma e\*' sempre fazer o 'build' contra uma versa\*~o limpa do perl (i.e. com 'site' e 'vendor' o mais vazios possi\*'vel). .SH "ME\*'TODOS" .IX Header "ME'TODOS" .SS "ensure_dir_structure_for" .IX Subsection "ensure_dir_structure_for" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .IP "Valor de Retorno: Nenhum" 4 .IX Item "Valor de Retorno: Nenhum" .PD .PP Tenta criar o caminho fornecido, e todos os direto\*'rios superiores necessa\*'rios. Gera uma excec\*,a\*~o em caso de falha. .SS "print_environment_vars_for" .IX Subsection "print_environment_vars_for" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .IP "Valor de Retorno: Nenhum" 4 .IX Item "Valor de Retorno: Nenhum" .PD .PP Exibe na sai\*'da padra\*~o as varia\*'veis listadas acima, devidamente ajustadas para utilizar o caminho fornecido como direto\*'rio base. .SS "build_environment_vars_for" .IX Subsection "build_environment_vars_for" .ie n .IP "Argumentos: $caminho_do_diretorio, $interpolar" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR, \f(CW$interpolar\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio, $interpolar" .PD 0 .ie n .IP "Valor de Retorno: %variaveis_de_ambiente" 4 .el .IP "Valor de Retorno: \f(CW%variaveis_de_ambiente\fR" 4 .IX Item "Valor de Retorno: %variaveis_de_ambiente" .PD .PP Retorna hash contendo as varia\*'veis de ambiente listadas acima, devidamente ajustadas para utilizar o caminho fornecido como direto\*'rio base. .SS "setup_env_hash_for" .IX Subsection "setup_env_hash_for" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .IP "Valor de Retorno: Nenhum" 4 .IX Item "Valor de Retorno: Nenhum" .PD .PP Constro\*'i as chaves no \f(CW%ENV\fR para o caminho fornecido, chamando \&\f(CW\*(C`build_environment_vars_for\*(C'\fR. .SS "install_base_perl_path" .IX Subsection "install_base_perl_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_base_de_instalacao" 4 .el .IP "Valor de Retorno: \f(CW$caminho_base_de_instalacao\fR" 4 .IX Item "Valor de Retorno: $caminho_base_de_instalacao" .PD .PP Retorna um caminho de direto\*'rio indicando onde instalar os mo\*'dulos Perl para essa instalac\*,a\*~o local de bibliotecas. Adiciona os direto\*'rios \f(CW\*(C`lib\*(C'\fR e \f(CW\*(C`perl5\*(C'\fR ao final do caminho fornecido. .SS "install_base_arch_path" .IX Subsection "install_base_arch_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_base_de_instalacao_arch" 4 .el .IP "Valor de Retorno: \f(CW$caminho_base_de_instalacao_arch\fR" 4 .IX Item "Valor de Retorno: $caminho_base_de_instalacao_arch" .PD .PP Retorna um caminho de direto\*'rio indicando onde instalar os mo\*'dulos Perl de arquiteturas especi\*'ficas para essa instalac\*,a\*~o local de bibliotecas. Baseia-se no valor de retorno do me\*'todo \*(L"install_base_perl_path\*(R", adicionando o valor de \f(CW$Config{archname}\fR. .SS "install_base_bin_path" .IX Subsection "install_base_bin_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_base_de_instalacao_bin" 4 .el .IP "Valor de Retorno: \f(CW$caminho_base_de_instalacao_bin\fR" 4 .IX Item "Valor de Retorno: $caminho_base_de_instalacao_bin" .PD .PP Retorna um caminho de direto\*'rio indicando onde instalar programas executa\*'veis para essa instalac\*,a\*~o local de bibliotecas. Baseia-se no valor de retorno do me\*'todo \*(L"install_base_perl_path\*(R", adicionando o direto\*'rio \f(CW\*(C`bin\*(C'\fR. .SS "resolve_empty_path" .IX Subsection "resolve_empty_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_base_de_instalacao" 4 .el .IP "Valor de Retorno: \f(CW$caminho_base_de_instalacao\fR" 4 .IX Item "Valor de Retorno: $caminho_base_de_instalacao" .PD .PP Cria e retorna o caminho de direto\*'rio raiz em que a instalac\*,a\*~o local de mo\*'dulos deve ser feita. O padra\*~o e\*' \f(CW\*(C`~/perl5\*(C'\fR. .SS "resolve_home_path" .IX Subsection "resolve_home_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_para_home" 4 .el .IP "Valor de Retorno: \f(CW$caminho_para_home\fR" 4 .IX Item "Valor de Retorno: $caminho_para_home" .PD .PP Procura pelo direto\*'rio padra\*~o (home) do usua\*'rio. Gera uma excec\*,a\*~o caso na\*~o encontre resultado definitivo. .SS "resolve_relative_path" .IX Subsection "resolve_relative_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_absoluto" 4 .el .IP "Valor de Retorno: \f(CW$caminho_absoluto\fR" 4 .IX Item "Valor de Retorno: $caminho_absoluto" .PD .PP Transforma o caminho fornecido em um caminho absoluto. .SS "resolve_path" .IX Subsection "resolve_path" .ie n .IP "Argumentos: $caminho_do_diretorio" 4 .el .IP "Argumentos: \f(CW$caminho_do_diretorio\fR" 4 .IX Item "Argumentos: $caminho_do_diretorio" .PD 0 .ie n .IP "Valor de Retorno: $caminho_absoluto" 4 .el .IP "Valor de Retorno: \f(CW$caminho_absoluto\fR" 4 .IX Item "Valor de Retorno: $caminho_absoluto" .PD .PP Invoca os seguintes me\*'todos em seque\*^ncia, passando o resultado do me\*'todo anterior para o seguinte, na tentativa de descobrir onde configurar o ambiente para a instalac\*,a\*~o local de bibliotecas: \*(L"resolve_empty_path\*(R", \&\*(L"resolve_home_path\*(R", \*(L"resolve_relative_path\*(R". Passa o caminho de direto\*'rio fornecido para \*(L"resolve_empty_path\*(R" que retorna um resultado que e\*' passado para \*(L"resolve_home_path\*(R", que enta\*~o tem seu resultado passado para \*(L"resolve_relative_path\*(R". O resultado dessa chamada final e\*' enta\*~o retornado pelo \*(L"resolve_path\*(R". .SH "UM AVISO SOBRE UNINST=1" .IX Header "UM AVISO SOBRE UNINST=1" Tenha cuidado ao usar o local::lib em conjunto com \*(L"make install UNINST=1\*(R". A ide\*'ia dessa opc\*,a\*~o e\*' desinstalar a versa\*~o anterior de um mo\*'dulo antes de instalar a mais recente. No entanto ela na\*~o possui uma verificac\*,a\*~o de seguranc\*,a de que a versa\*~o antiga e a nova referem-se ao mesmo direto\*'rio. Usada em combinac\*,a\*~o com o local::lib, voce\*^ pode potencialmente apagar uma versa\*~o globalmente acessi\*'vel de um mo\*'dulo e instalar a versa\*~o mais nova no direto\*'rio local. Apenas utilize \*(L"make install UNINST=1\*(R" junto com o local::lib se voce\*^ entende essas possi\*'veis conseque\*^ncias. .SH "LIMITAC\*,O\*~ES" .IX Header "LIMITAC,O~ES" As ferramentas auxiliares do perl na\*~o conseguem lidar com nomes de direto\*'rios contendo espac\*,os, enta\*~o na\*~o e\*' possi\*'vel fazer seu bootstrap do local::lib em um direto\*'rio com espac\*,os. O que voce\*^ pode fazer e\*' mover seu local::lib para um direto\*'rio com espac\*,os \fBapo\*'s\fR ter instalado todos os mo\*'dulos dentro dele. Mas esteja ciente que voce\*^ na\*~o podera\*' atualizar ou instalar outros mo\*'dulos do \s-1CPAN\s0 nesse direto\*'rio local apo\*'s a mudanc\*,a. .PP A detecc\*,a\*~o da shell e\*' relativamente ba\*'sica. Neste momento, qualquer coisa com csh no nome sera\*' tratada como a C shell ou compati\*'vel, e todo o resto sera\*' tratado como Bourne, exceto em sistemas Win32. Caso a varia\*'vel de ambiente \f(CW\*(C`SHELL\*(C'\fR na\*~o esteja disponi\*'vel, assumiremos tratar-se de uma shell compati\*'vel com a Bourne. .PP A te\*'cnica de bootstrap e\*' um hack e usara\*' o \s-1CPAN\s0.pm para o ExtUtils::MakeMaker mesmo que voce\*^ tenha o \s-1CPANPLUS\s0 instalado. .PP Destro\*'i qualquer valor pre\*'\-existente nas varia\*'veis de ambiente \s-1PERL5LIB, PERL_MM_OPT\s0 e \s-1PERL_MB_OPT.\s0 .PP Provavelmente deveria auto-configurar o \s-1CPAN\s0 caso isso ainda na\*~o tenha sido feito. .PP Correc\*,o\*~es (patches) sa\*~o muito bem-vindos para quaisquer dos itens acima. .PP Em sistemas Win32, na\*~o ha\*' uma forma de escrever no registro as varia\*'veis de ambiente criadas, para que elas persistam a uma reinicializac\*,a\*~o. .SH "SOLUC\*,A\*~O DE PROBLEMAS" .IX Header "SOLUC,A~O DE PROBLEMAS" Se voce\*^ configurou o local::lib para instalar mo\*'dulos do \s-1CPAN\s0 em algum lugar do seu 'home', e mais tarde tentou instalar um mo\*'dulo fazendo \f(CW\*(C`cpan \-i Foo::Bar\*(C'\fR, mas ele falhou com um erro como: \f(CW\*(C`Warning: You do not have permissions to install into /usr/lib64/perl5/site_perl/5.8.8/x86_64\-linux at /usr/lib64/perl5/5.8.8/Foo/Bar.pm\*(C'\fR e em algum lugar no seu log de instalac\*,a\*~o houver um erro dizendo \f(CW\*(C`\*(AqINSTALL_BASE\*(Aq is not a known MakeMaker parameter name\*(C'\fR, enta\*~o voce\*^ de alguma forma perdeu seu ExtUtils::MakeMaker atualizado. .PP Para remediar a situac\*,a\*~o, execute novamente o procedimento de bootstrap descrito acima. .PP Enta\*~o, execute \f(CW\*(C`rm \-r ~/.cpan/build/Foo\-Bar*\*(C'\fR .PP Finalmente, execute novamente o \f(CW\*(C`cpan \-i Foo::Bar\*(C'\fR e ele deve instalar sem problemas. .SH "AMBIENTE" .IX Header "AMBIENTE" .IP "\s-1SHELL\s0" 4 .IX Item "SHELL" .PD 0 .IP "\s-1COMSPEC\s0" 4 .IX Item "COMSPEC" .PD O local::lib procura pela varia\*'vel de ambiente \f(CW\*(C`SHELL\*(C'\fR do usua\*'rio ao processar e exibir os comandos a serem adicionados no arquivo de configurac\*,a\*~o da shell. .Sp Em sistemas Win32, \f(CW\*(C`COMSPEC\*(C'\fR tambe\*'m sera\*' examinado. .SH "SUPORTE" .IX Header "SUPORTE" \&\s-1IRC:\s0 .PP .Vb 1 \& Acesse #local\-lib em irc.perl.org. .Ve .SH "AUTOR DA TRADUC\*,A\*~O" .IX Header "AUTOR DA TRADUC,A~O" Breno G. de Oliveira, \f(CW\*(C`\*(C'\fR, apo\*'s ter perdido uma aposta para o Getty durante a Copa de 2010. .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (c) 2007 \- 2010 \*(L"\s-1AUTHOR\*(R"\s0 in local::lib e \*(L"\s-1CONTRIBUTORS\*(R"\s0 in local::lib do local::lib como listados em local::lib. .SH "LICENC\*,A" .IX Header "LICENC,A" Esta biblioteca e\*' software livre e pode ser distribui\*'da sob os mesmo termos do perl.