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?

35
demandé sur brian d foy 2010-09-17 17:45:42

2 réponses

voir local::lib .

une fois que vous l'avez installé, vous pouvez faire:

perl -MCPAN -Mlocal::lib -e 'CPAN::install(LWP)'

25
répondu Sinan Ünür 2010-09-17 13:53:51

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:

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.

25
répondu brian d foy 2017-05-23 10:31:17