Como posso instalar um módulo CPAN em um diretório local?

Estou usando uma máquina Linux hospedada para não ter permissions para escrever no /usr/lib .

Quando tento instalar um módulo CPAN, fazendo o usual:

 perl Makefile.PL make test make install 

Esse módulo é extraído para uma pasta blib/lib/ . Eu mantive o use blib/lib/ModuleName mas ainda o compilador diz que o módulo não pode ser encontrado. Eu tentei copiar o arquivo .pm no diretório local e manteve require ModuleName mas ainda me dá algum erro.

Como posso instalar um módulo em outro diretório e usá-lo?

Eu tive um problema semelhante, onde eu não conseguia nem instalar o local :: lib

Eu criei um instalador que instalou o módulo em algum lugar relativo aos arquivos .pl

A instalação é como:

 perl Makefile.PL PREFIX=./modulos make make install 

Então, no arquivo .pl que requer o módulo, que está em ./

 use lib qw(./modulos/share/perl/5.8.8/); # You may need to change this path use module::name; 

O restante dos arquivos (makefile.pl, module.pm, etc) não requer alterações.

Você pode chamar o arquivo .pl com apenas

 perl file.pl 

Outras respostas já no Stackoverflow:

  • Como faço para instalar módulos localmente sem access root …
  • Como posso usar um novo módulo Perl sem permissions de instalação?

De perlfaq8:


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

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

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 mbuildpl_arg '--install_base /mydir/perl' cpan> o conf commit 

local :: lib irá ajudá-lo. Ele convencerá “make install” (e “Build install”) a instalar em um diretório no qual você possa escrever, e ele informará ao perl como chegar a esses módulos.

Em geral, se você quiser usar um módulo que está em um diretório blib /, você quer dizer perl -Mblib ... where ... é como você normalmente invocaria seu script.

Eu recomendo fortemente Perlbrew . Ele permite executar várias versões do Perl, instalar pacotes, hackear internos do Perl, se você quiser, todas as permissions regulares do usuário.

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

 perl Makefile.PL INSTALL_BASE=/mydir/perl