Comment puis-je installer les modules Perl sans être root?
Je suis sur une machine Linux où je n'ai pas les privilèges root. Je veux installer certains paquets via CPAN dans mon répertoire home de sorte que quand je le lance en Perl, il sera en mesure de le voir.
J'ai couru cpan
, qui a demandé pour certains coniguration options. Il a demandé un répertoire, dans lequel il a suggéré ~/perl
"pour les utilisateurs non-root". Pourtant, lorsque j'essaie d'installer un paquet, il échoue à la make install
étape, parce que je n'ai pas accès en écriture à /usr/lib/perl5/whatever
.
Comment puis-je configurer CPAN pour que je puisse installer des paquets dans mon répertoire home?
- double possible de Comment puis-je utiliser CPAN comme un utilisateur non root?
- Je suis d'accord. Je vous recommande également les perlbrew, qui est mentionné dans la question "Comment puis-je installer Perl version sous ma maison à l'aide de perlbrew?" stackoverflow.com/questions/3733482/...
- Double Possible de Comment puis-je utiliser un nouveau module Perl sans installer les autorisations?
Vous devez vous connecter pour publier un commentaire.
Voir locale::lib.
Une fois que vous avez installé, vous pouvez le faire:
mkdir /root/.cpan: Permission denied at /usr/lib/perl5/5.8.5/CPAN.pm line 2342
. Aucun moyen de tester si local::lib a été correctement installé ?local::lib
a été ajouté àCPAN.pm
en 2011.perl
5.8.5 a été sorti en 2004. C'est là que réside le problème.Il y a la manière documentée dans perlfaq8, qui est ce que locale::lib est fait pour vous.
C'est aussi une foire aux StackOverflow question:
Curiosuly, aucune de ces sont proposées lorsque j'utilise votre question initiale titre (qui est l'une des raisons pour lesquelles un bon titre est très important dans la recherche de votre réponse).
Comment puis-je garder mon propre module/répertoire de la bibliothèque?
Lorsque vous créez des modules, dites-Perl où installer les modules.
Si vous souhaitez installer les modules pour votre propre utilisation, de la façon la plus simple pourrait être locale::lib, que vous pouvez télécharger sur le CPAN. Il définit les différents paramètres d'installation pour vous, et utilise ces mêmes paramètres dans vos programmes.
Si vous voulez plus de flexibilité, vous devez configurer votre CPAN client pour votre situation particulière.
Pour Makefile.PL distributions, utilisez le INSTALL_BASE option lors de la génération de Makefile:
Vous pouvez le faire dans votre CPAN.pm configuration des modules d'installer automatiquement dans votre bibliothèque privée de répertoire lorsque vous utilisez le CPAN.pm shell:
Pour Construire.PL distributions, utilisez l'option --install_base option:
Vous pouvez configurer le CPAN.pm d'utiliser automatiquement cette option:
INSTALL_BASE raconte ces outils pour mettre vos modules dans /mydir/perl/lib/perl5. Voir Comment faire pour ajouter un répertoire de mon chemin (@INC) au moment de l'exécution? pour plus de détails sur la façon de exécuter votre nouvellement installé les modules.
Il y a un problème avec INSTALL_BASE, puisqu'il agit différemment que le PRÉFIXE et la LIB paramètres que les anciennes versions de ExtUtils::MakeMaker préconisé. INSTALL_BASE ne prend pas en charge l'installation de modules pour plusieurs versions de Perl ou d'architectures différentes sous le même répertoire. Vous devriez considérer si vous voulez vraiment , et si vous le faites, utilisez l'ancien PRÉFIXE et LIB paramètres. Voir la ExtUtils::Makemaker documentation pour plus de détails.
CPAN façon
exécuter
cpan
de commande. Si vous n'avez pas CPAN configurée, le faire en premier! Autrement, vous verrez la cpan invite. Dans ce cas, le type delook local::lib
et vous aurez une invite du shell. Dans ce nouveau shell, exécutez la bootstrap de commande configuration et compilation du module dans le même temps, à soufflet.user@host:~/.cpan/build/local-lib-1.004003-UyX2wf$ perl Makefile.PL --bootstrap && make test && make install
Maintenant, l'exportation de certaines variables:
Chemin où local::lib va installer les choses
echo 'eval $(perl -I$index.t/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc
Et Perl variable pour éviter la saisie de l'utilisateur
echo 'export PERL_MM_USE_DEFAULT=1' >> ~/.bashrc
Maintenant charger votre bashrc de course
source ~/.bashrc
Essayez d'installer running
cpan <SOME_VALID_MODULE_NAMESPACE>
Que c'est! Maintenant, vous pouvez installer des modules à l'aide de cpan sans les privilèges root. Mais, rappelez-vous que cela fonctionnera seulement pour la UTILISATEUR ACTUEL y compris l'utilisateur root !
cpanminus façon
Si vous avez installé votre sys admin mérite une bière!
Il suffit d'exécuter
$ cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/-Mlocal::lib)
Ouvrir un autre terminal et exécutez
$ env |grep PERL
Vous devriez voir quelque chose comme ceci:
Mais si vous ne l'êtes pas, exporter des variables comme ceci:
$ echo "export PERL5LIB=\"$HOME/perl5/lib/perl5\"">>~/.bashrc && \
echo "export PERL_MB_OPT=\"--install_base '$HOME/perl5'\">>~/.bashrc && \
echo "export PERL_LOCAL_LIB_ROOT=$HOME/perl5">>~/.bashrc
Enfin, chargez votre bashrc fichier et essayez de l'installer avec les commandes
source ~/.bashrc
et
cpanm <SOME_VALID_MODULE_NAMESPACE>
Fim!