2010-04-12 2 views
3

Tout en essayant de le faire:Impossible de localiser dans @INC pendant la dépendance CPAN effectuée non pas comme installation a la racine

perl -I'/v1/data/site_perl' -MCPAN -e 'install Log::Dispatch'; 

Je continue à obtenir « Impossible de localiser Params/Validate.pm dans @INC. » Lorsque vous regardez la sortie,/v1/data/site_perl n'est PAS dans le @INC affiché, même si j'ai utilisé -I.

Je ne suis pas racine, donc je l'ai changé ma config CPAN de telle sorte que:

'makepl_arg' => q[LIB=/v1/data/site_perl INSTALLSITEMAN1DIR=/v1/data/site_perl/man/man1 INSTALLSITEMAN3DIR=/v1/data/site_perl/man/man3 INSTALLMAN1DIR=/v1/data/site_perl/man/man1 INSTALLMAN3DIR=/v1/data/site_perl/man/man3] 

Même LIB est réglé.

Dans un script de base que j'ai:

use lib '/v1/data/site_perl'; 
use Params::Validate; 

sans problème.

Comment faire pour que le journal :: Dispatch utilise lib/v1/data/site_perl sans installation forcée? Qu'est-ce que je rate?

+1

duplication possible de http://stackoverflow.com/questions/102850/how-can-i-install-cpan-modules-locally-without-root-access-dynaloader-pm-line-22 et http: // stackoverflow.com/questions/540640/how-can-i-install-a-cpan-module-into-a-local-directory – Ether

Répondre

3

Je crois que CPAN.pm aime appeler beaucoup de sous-processus pour diverses tâches, et celles-ci finissent par lancer de nouveaux perl s, qui n'hériteront pas de votre drapeau -I. Au lieu de cela, essayez de définir une variable d'environnement PERL5LIB, par ex.

PERL5LIB='/v1/data/site_perl' perl -MCPAN -e 'install Log::Dispatch' 

Une autre stratégie à considérer est simplement construire une installation Perl complète dans votre répertoire local - puis utilisez que utilitaires CPAN de Perl. Ils auront déjà tous vos propres chemins intégrés. C'est comme ça que j'ai tendance à le faire.

+0

Merci pour la réponse rapide et correcte. – garrett

2

Vous ne pouvez pas installer dans un autre répertoire CPAN en utilisant un simple drapeau -I. Vous pouvez utiliser le package local::lib pour installer un ensemble local de bibliothèques ou voir this question et this question.

+0

J'ai utilisé -I pour ajouter ma bibliothèque non-root à @INC. Une fois que le CPAN est arrivé au module principal, il n'a pas pu trouver les modules récemment installés car cette instance de @INC ne contenait pas mon répertoire. Je n'ai pas essayé de paramétrer PERL5LIB, ce qui a fonctionné. local :: lib n'est pas installé sur cette machine, mais le sera bientôt! Merci pour l'info. – garrett

Questions connexes