Como posso instalar módulos Perl sem privilégios de root?

Eu estou em uma máquina Linux onde não tenho privilégios de root. Eu quero instalar alguns pacotes através do CPAN em meu diretório home para que quando eu executar o Perl, ele possa vê-lo.

Eu corri cpan , que pediu algumas opções de configuração. Ele solicitou algum diretório, que sugeriu ~/perl “para usuários não-root”. Ainda assim, quando tento instalar um pacote, ele falha na etapa de make install , porque não tenho access de gravação para /usr/lib/perl5/whatever .

Como posso configurar o CPAN para que eu possa instalar pacotes no meu diretório pessoal?

Veja local :: lib .

Depois de ter instalado, você pode fazer:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

Existe o caminho documentado em perlfaq8 , que é o que o local :: lib está fazendo por você.

Também é uma pergunta do StackOverflow frequentemente perguntada:

  • Por que a instalação de determinados módulos CPAN requer privilégios de root?
  • Como posso instalar módulos CPAN localmente sem access root (erro DynaLoader.pm line 229)?
  • Como eu digo ao CPAN.pm para instalar todos os módulos em um diretório específico?
  • Como posso instalar um módulo CPAN em um diretório local?
  • Como posso usar um novo módulo Perl sem permissions de instalação?
  • Como posso usar o CPAN como um usuário não root?
  • Como posso instalar módulos locais com a ferramenta cpan?

Por curiosidade, nada disso é sugerido quando uso o título da pergunta original (que é uma das razões pelas quais um bom título é muito importante para encontrar sua resposta).


Como mantenho meu próprio diretório de módulos / bibliotecas?

Quando você construir módulos, diga ao Perl onde instalar os módulos.

Se você deseja instalar módulos para seu próprio uso, a maneira mais fácil pode ser local: lib, que você pode baixar do CPAN. Ele define várias configurações de instalação para você e usa essas mesmas configurações em seus programas.

Se você deseja mais flexibilidade, é necessário configurar seu cliente CPAN para sua situação específica.

Para distribuições baseadas em Makefile.PL, use a opção INSTALL_BASE ao gerar Makefiles:

 perl Makefile.PL INSTALL_BASE=/mydir/perl 

Você pode configurá-lo em sua configuração do CPAN.pm para que os módulos sejam instalados automaticamente no diretório da biblioteca privada quando você usar o shell CPAN.pm:

 % cpan cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl cpan> o conf commit 

Para distribuições baseadas em Build.PL, use a opção –install_base:

 perl Build.PL --install_base /mydir/perl 

Você pode configurar o CPAN.pm para usar automaticamente esta opção também:

 % cpan cpan> o conf mbuild_arg "--install_base /mydir/perl" cpan> o conf commit 

INSTALL_BASE informa essas ferramentas para colocar seus módulos em / mydir / perl / lib / perl5. Veja Como adicionar um diretório ao meu caminho de inclusão (@INC) em tempo de execução? para detalhes sobre como executar seus módulos recém-instalados.

Há uma ressalva no INSTALL_BASE, no entanto, uma vez que ele age de maneira diferente das configurações PREFIX e LIB que as versões mais antigas do ExtUtils :: MakeMaker defendiam. INSTALL_BASE não suporta a instalação de módulos para várias versões do Perl ou arquiteturas diferentes no mesmo diretório. Você deve considerar se realmente deseja isso e, se fizer isso, use as configurações PREFIX e LIB mais antigas. Veja a documentação do ExtUtils :: Makemaker para mais detalhes.