Comment puis-je utiliser un nouveau module Perl sans les permissions d'installation?
voici ma situation: Je ne sais presque rien de Perl mais c'est la seule langue disponible sur une machine de portage. Je n'ai que les permissions d'écrire dans ma zone de travail locale et pas L'emplacement D'installation de Perl. Je dois utiliser le parallèle:: ForkManager module Perl de CPAN
comment utiliser ce parallèle::ForkManager sans faire d'installation centrale? Y a-t-il une variable d'environnement que je peux définir pour qu'elle soit localisée?
Merci
JD
10 réponses
From perlfaq8: comment conserver mon propre répertoire de modules/bibliothèques? :
lorsque vous construisez des modules, dites à Perl où installer les modules.
pour les distributions basées sur C, utilisez L'option INSTALL_BASE lors de la génération de Makefiles:
perl Makefile.PL INSTALL_BASE=/mydir/perl
vous pouvez le mettre dans votre CPAN.configuration pm de façon à ce que les modules s'installent automatiquement dans le répertoire de votre bibliothèque privée lorsque vous utilisez le CPAN.PM shell:
% cpan
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
cpan> o conf commit
pour les distributions basées sur C, utilisez l'option -- install_base:
perl Build.PL --install_base /mydir/perl
Vous pouvez configurer le CPAN.pm d'utiliser automatiquement cette option:
% cpan
cpan> o conf mbuild_arg --install_base /mydir/perl
cpan> o conf commit
INSTALL_BASE indique à ces outils de mettre vos modules dans F. Voir L pour plus de détails sur la façon d'exécuter votre nouveau moudles installées.
il y a une mise en garde avec INSTALL_BASE, cependant, puisqu'il agit autrement que le préfixe et LIB les réglages des anciennes versions de ExtUtils:: MakeMaker prôné. INSTALL_BASE ne supporte pas installation de modules pour plusieurs versions de Perl ou différentes architectures sous le même répertoire. Vous devriez considérer si vous je veux vraiment que , et si vous le faites, utilisez l'ancien préfixe et LIB paramètre. Voir la documentation ExtUtils::Makemaker pour plus de détails.
Check out ce post de Mark Dominus
extrait:
- Set PREFIX=X lors de la construction du Makefile
- Set INSTALLDIRS=vendorprefix = x lors de la construction du Makefile
- ou peut-être à la place de VENDORPREFIX vous devez mettre INSTALLVENDORLIB ou quelque chose
- ou peut-être au lieu de les placer tout en construisant le Makefile vous devez les définir pendant l'exécution de la cible make install
- ensemble LIB=X / lib lors de la construction du Makefile
- Use PAR
- Utilisation locale::lib
Mark donne également une autre solution dans son blog qui prend un peu plus d'espace à desribe mais se résume à exécuter make and make test mais pas make install et ensuite utiliser les trucs dans blib/.
télécharger le paquet CPAN vers un dossier:
wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz
gunzip Parallel-ForkManager-1.06.tar.gz
tar -xvf Parallel-ForkManager-1.06.tar
avant cela créez un dossier à la maison pour stocker vos modules locaux, maintenant allez dans le dossier téléchargé et exécutez les cmmands suivants:
perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install
obtenir le chemin vers ForkManager à partir du dossier installé,/home / username/myModules et localisez le dossier parallèle et obtenez le chemin complet vers ceci.
maintenant dans votre fichier perl mettez-les au début
use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;
, ça devrait le faire.
il y a la variable D'environnement PERL5LIB, et -I
sur la ligne de commande quand il s'agit d'utiliser le module. Il existe des mécanismes pour informer CPAN et CPANPLUS.
il y a de l'information à la question 5 du manuel du PAC (perldoc PAC, ou regardez le PAC lui-même).
vous pouvez utiliser le commutateur de ligne de commande -I
(capital i) suivi du répertoire où vous placerez le module; ou essayez la directive" use lib " suivie du répertoire.
perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl
envisager d'utiliser cpanminus, a suggéré sur cet autre fil