2010-06-05 9 views
65

Voglio installare i moduli perl su un server condiviso sul quale non ho accesso root. Come posso fare questo? Sembra che abbiano anche una versione precedente di CPAN (si lamenta di questo durante l'esecuzione del comando), è possibile aggiornare il comando CPAN utilizzato dal mio account senza richiedere l'accesso come root?Come posso utilizzare CPAN come utente non root?

+1

possibile duplicato di [? Come posso utilizzare un nuovo modulo Perl senza installare i permessi] (http://stackoverflow.com/questions/ 251705/how-can-i-use-a-new-perl-module-senza-install-permissions) – daxim

risposta

117

Il metodo più semplice che ho trovato finora è 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 
echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile 

Questo presuppone che il profilo è denominato .profile, potrebbe essere necessario cambiare che per essere .bash_profile, .bashrc, ecc Dopo che è possibile installare moduli dicendo

cpanm Module::Name 

e li usa allo stesso modo semplice lo faresti se fossero installati nelle directory root.


Quello che segue è una breve spiegazione di ciò che i comandi precedenti fanno.

wget -O- http://cpanmin.us recupera l'ultima versione di cpanm e lo stampa a STDOUT che viene poi convogliata al perl - -l ~/perl5 App::cpanminus local::lib. Il primo - dice perl aspettarsi il programma di entrare in STDIN, questo rende perl eseguire la versione di cpanm appena scaricato. perl passa il resto degli argomenti a cpanm. L'argomento -l ~/perl5 indica cpanm dove installare i moduli Perl, e gli altri due argomenti sono due moduli da installare. [App::cpanmins] 1 è il pacchetto che installa cpanm. local::lib è un modulo helper che gestisce le variabili di ambiente necessarie per eseguire i moduli nella directory locale.

Dopo che i moduli siano installati si corre

eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib` 

per impostare le variabili di ambiente necessarie per utilizzare i moduli locali e poi

echo 'eval `perl -I ~/perl5/lib/perl5 -Mlocal::lib`' >> ~/.profile 

per garantire saremo in grado di utilizzare la volta successiva effettuiamo l'accesso.

echo 'export MANPATH=$HOME/perl5/man:$MANPATH' >> ~/.profile 

si spera causare l'uomo a trovare le pagine man per i moduli locali.

+0

+1 per cpanminus ... non l'ho mai usato, quindi non mi sento come se dovessi raccomandarlo, ma mi piace da quello che ho visto su SO finora – DVK

+6

Questo ha funzionato perfettamente per me. Solo una piccola nota per rimuovere prima eventuali variabili d'ambiente PERL5LIB esistenti nel tuo ~/.profile (o qualsiasi altra cosa). Altrimenti local :: lib non si installerà durante l'esecuzione del primo comando. –

+0

@juannavar Buon punto, tendo ad installarlo su macchine appena installate, quindi non mi imbatto in quel caso. –

10

http://web.archive.org/web/20120427144232/http://perl.jonallen.info/writing/articles/install-perl-modules-without-root

http://novosial.org/perl/life-with-cpan/non-root/

Il passo principale in entrambe le istruzioni comporta local::lib module

AFAIK, logica CPAN è contenuta nel modulo Perl (CPAN.pm) che significa che è anche possibile installare facilmente il più recente nella tua directory locale come faresti con qualsiasi altro modulo Perl.


Inoltre, una volta che si installa i moduli in una posizione non standard, dai un'occhiata a queste due domande sulle librerie di carico da posizioni non standard (alcune delle informazioni è già disponibile nel link qui sotto):

How does a Perl program know where to find the file containing Perl module it uses?

How is Perl’s @INC constructed? (aka Quali sono tutti i modi di influenzare in cui i moduli Perl sono cercato?)

+0

Divulgazione - Ho creato entrambe le domande SO collegate in questa risposta. – DVK

+2

Ci sono almeno quattro modi diversi per installare i moduli da CPAN: a mano, il modulo CPAN (e il suo equivalente a riga di comando 'cpan'), il modulo' CPANPLUS' (e il suo equivalente a riga di comando 'cpanp'), e la nuova App: : distribuzione cpanminus che installa 'cpanm'. Di questi, trovo che 'cpanm' sia il più facile da installare e utilizzare. 'cpan' e' cpanp' sono installati di default, ma richiedono un setup significativo per funzionare correttamente. –

+0

404: L'URL richiesto/scrittura/articoli/installazione-perl-moduli-senza-root non è stato trovato su questo server. – harschware

5

Per completezza, questo è il processo di installazione di cpanm su OSX se si desidera mantenere il perl5 sotto ~/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 
2

Se si vuole essere in grado di leggere le pagine man per i moduli cpanminus-installato così, si dovrebbe anche assicurarsi che il corretto sottodirectory del percorso della libreria scelto si trova in MANPATH. Quindi la soluzione di cui sopra che mostra il processo di installazione del cpanm ha bisogno il seguente comando aggiuntivo:

export MANPATH=$HOME/Library/perl5/man:$MANPATH' >> ~/.bash_profile 
Problemi correlati