Je souhaite installer des modules Perl sur un serveur partagé sur lequel je n'ai pas d'accès root. Comment puis-je faire ceci? Ils semblent également avoir une version plus ancienne de CPAN (il se plaint de cela en exécutant la commande), est-il possible de mettre à jour la commande CPAN utilisée depuis mon compte sans nécessiter un accès root?
Réponses
Trop de publicités?La méthode la plus simple que j'ai trouvé jusqu'à présent est-à-dire
wget -O- http://cpanmin.us | perl - -l ~/perl5 App::cpanminus local::lib
eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`
echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile
Cela suppose que votre profil est nommé .profile
, vous devrez peut-être modifier que pour être .bash_profile
, .bashrc
, etc. Après cela, vous pouvez installer des modules en disant
cpanm Module::Name
et tout simplement utiliser de la même façon que vous le feriez si l'ont été installés dans le répertoire racine.
Ce qui suit est une brève explication de ce que les commandes ci-dessus ne.
wget -O-
récupère la dernière version de http://cpanmin.us
et l'imprime à l' qui est ensuite canalisée vers
cpanm
. La première STDOUT
dit perl - -l ~/perl5 App::cpanminus local::lib
de s'attendre à ce que le programme à venir sur -
, ce qui rend perl
exécuter la version d' STDIN
nous venez de télécharger. perl
passe le reste de la arguments au cpanm
. L' perl
argument indique cpanm
où installer les modules Perl, et les deux autres arguments sont de deux modules à installer. -l ~/perl5
]1 est le paquet qui installe cpanm
. [App::cpanmins
est un module d'aide qui gère les variables d'environnement nécessaires à l'exécution de modules dans le répertoire local.
Après ces modules sont installés, nous courons
cpanm
pour définir les variables d'environnement nécessaires à l'utilisation des modules locaux et puis
local::lib
pour nous assurer que nous serons en mesure de les utiliser la prochaine fois que nous nous connectons.
http://perl.jonallen.info/writing/articles/install-perl-modules-without-root
http://novosial.org/perl/life-with-cpan/non-root/
L'étape principale dans les deux ensembles d'instructions implique locale::lib module
Autant que je sache, CPAN logique est contenue dans le module Perl (CPAN.h) ce qui signifie que vous pouvez facilement l'installer dans votre répertoire local, comme vous le feriez avec tout autre module Perl.
Aussi, une fois que vous installer vos modules dans emplacement non standard, découvrez ces deux questions sur le chargement de bibliothèques à partir d'un emplacement non standard (certains de l'info est déjà disponible dans le lien ci-dessus):
Comment est-Perl @INC construit? (aka Quelles sont les façons d'affecter où modules Perl sont recherchés?)
Pour être complet, il s’agit du processus d’installation de cpanm
sur OSX si vous souhaitez conserver votre perl5
sous ~/Library
.
curl -L http://cpanmin.us | perl - -l ~/Library/perl5 App::cpanminus local::lib
eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`
echo 'eval `perl -I ~/Library/perl5/lib/perl5 -Mlocal::lib=~/Library/perl5`' >> ~/.bash_profile