web-dev-qa-db-fra.com

Comment installer un module CPAN dans un répertoire local?

J'utilise une machine Linux hébergée donc je n'ai pas les autorisations pour écrire dans le /usr/lib répertoire.

Lorsque j'essaie d'installer un module CPAN en faisant comme d'habitude:

Perl Makefile.PL
make test
make install

Ce module est extrait dans un blib/lib/ dossier. J'ai gardé use blib/lib/ModuleName mais le compilateur dit toujours que le module est introuvable. J'ai essayé de copier le fichier .pm dans le répertoire local et j'ai conservé require ModuleName mais ça me donne quand même une erreur.

Comment puis-je installer un module dans un autre répertoire et l'utiliser?

60
Ram

J'ai eu un problème similaire, où je n'ai même pas pu installer local :: lib

J'ai créé un programme d'installation qui a installé le module quelque part par rapport aux fichiers .pl

L'installation se déroule comme:

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

Ensuite, dans le fichier .pl qui nécessite le module, qui est en ./

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

Les autres fichiers (makefile.pl, module.pm, etc.) ne nécessitent aucune modification.

Vous pouvez appeler le fichier .pl avec juste

Perl file.pl
36
XenF

local :: lib vous aidera. Il convaincra "make install" (et "Build install") d'installer dans un répertoire dans lequel vous pouvez écrire, et il indiquera à Perl comment accéder à ces modules.

En général, si vous souhaitez utiliser un module qui se trouve dans un répertoire blib /, vous voulez dire Perl -Mblib ...... est la façon dont vous invoquez normalement votre script.

19
jrockway

Pour les distributions basées sur Makefile.PL, utilisez l'option INSTALL_BASE lors de la génération des Makefiles:

Perl Makefile.PL INSTALL_BASE=/mydir/Perl
3
parthi

Je recommande fortement Perlbrew . Il vous permet d'exécuter plusieurs versions de Perl, d'installer des packages, de pirater les internes de Perl si vous le souhaitez, toutes les autorisations utilisateur normales.

3
tiktak