Comment puis-je installer des modules Perl sans les privilèges root?
je suis sur une machine Linux où je n'ai pas de privilèges root. Je veux installer des paquets via CPAN dans mon répertoire personnel pour que Perl puisse le voir.
j'ai couru cpan
, qui a demandé quelques options de coniguration. Il a demandé un répertoire, qu'il a suggéré ~/perl
"pour les utilisateurs non-root". Pourtant, quand j'essaie d'installer un paquet, il échoue à l'étape make install
, parce que je n'ai pas d'accès en écriture à /usr/lib/perl5/whatever
.
comment configurer CPAN pour que je puisse installer des paquets dans mon répertoire personnel?
2 réponses
voir local::lib .
une fois que vous l'avez installé, vous pouvez faire:
perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'
il y a la voie documentée dans perlfaq8 , ce qui est ce que local::lib fait pour vous.
c'est aussi une question fréquemment posée sur StackOverflow:
- pourquoi l'installation de certains modules CPAN nécessite-t-elle le privilège root?
- Comment puis-je installer des modules CPAN localement sans accès root (DynaLoader.GP ligne 229 erreur)?
- comment le dire à CPAN.pm pour installer tous les modules dans un répertoire spécifique?
- comment installer un module CPAN dans un répertoire local?
- Comment puis-je utiliser un nouveau module Perl sans les permissions d'installation?
- Comment puis-je utiliser CPAN comme un utilisateur non-root?
- Comment puis-je installer des modules locaux avec l'outil cpan?
curieusement, aucun de ceux-ci ne sont suggérés lorsque j'utilise le titre original de votre question (ce qui est l'une des raisons pour lesquelles un bon titre est très important pour trouver votre réponse).
comment conserver mon propre répertoire de modules/bibliothèques?
lorsque vous construisez des modules, dites à Perl où installer les modules.
si vous voulez installer des modules pour votre propre usage, la façon la plus simple pourrait être locale::lib, que vous pouvez télécharger à partir de CPAN. Il définit divers paramètres d'installation pour vous, et utilise les mêmes paramètres dans vos programmes.
si vous voulez plus de flexibilité, vous devez configurer votre client CPAN pour votre situation particulière.
Pour Makefile.Distributions basées sur PL, utilisez L'option INSTALL_BASE pour générer des Makefiles:
perl Makefile.PL INSTALL_BASE=/mydir/perl
vous pouvez le mettre dans votre CPAN.configuration pm de sorte 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
For Build.Distributions basées sur PL, 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 / mydir / perl/lib / perl5. Voir comment ajouter un répertoire à mon chemin d'inclusion (@INC) à l'exécution? pour plus de détails sur la façon d'exécuter vos modules nouvellement installés.
il y a une mise en garde avec INSTALL_BASE, cependant, car il agit différemment des réglages de préfixe et de LIB que les anciennes versions d'ExtUtils::MakeMaker préconisées. INSTALL_BASE ne supporte pas l'installation de modules pour plusieurs versions de Perl ou différentes architectures sous le même répertoire. Vous devriez considérer si vous vraiment vous voulez cela, et si vous le faites, utilisez les anciens paramètres de préfixe et de LIB. Voir la documentation ExtUtils::Makemaker pour plus de détails.