Come posso installare i moduli Perl senza privilegi di root?

Sono su una macchina Linux in cui non ho privilegi di root. Voglio installare alcuni pacchetti tramite CPAN nella mia home directory in modo che quando eseguirò Perl, sarà in grado di vederlo.

Ho eseguito cpan , che chiedeva alcune opzioni di configurazione. Ha richiesto una directory, che ha suggerito ~/perl “per utenti non root”. Tuttavia, quando provo a installare un pacchetto, fallisce nel passaggio di make install , perché non ho accesso in scrittura a /usr/lib/perl5/whatever .

Come posso configurare il CPAN in modo che possa installare i pacchetti nella mia home directory?

Vedi local :: lib .

Una volta installato, puoi fare:

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

C’è il modo documentato in perlfaq8 , che è quello che local :: lib sta facendo per te.

È anche una domanda StackOverflow frequente:

  • Perché l’installazione di determinati moduli CPAN richiede il privilegio di root?
  • Come posso installare localmente i moduli CPAN senza l’accesso root (errore 229 di DynaLoader.pm)?
  • Come si dice a CPAN.pm di installare tutti i moduli in una directory specifica?
  • Come posso installare un modulo CPAN in una directory locale?
  • Come posso usare un nuovo modulo Perl senza autorizzazioni di installazione?
  • Come posso utilizzare CPAN come utente non root?
  • Come posso installare i moduli locali con lo strumento cpan?

Curiosuly, nessuno di questi è suggerito quando uso il tuo titolo di domanda originale (che è uno dei motivi per cui un buon titolo è molto importante per trovare la tua risposta).


Come posso mantenere il mio modulo / directory della libreria?

Quando si creano i moduli, indicare a Perl dove installare i moduli.

Se si desidera installare i moduli per uso personale, il modo più semplice potrebbe essere local :: lib, che è ansible scaricare da CPAN. Imposta varie impostazioni di installazione per te e utilizza le stesse impostazioni all’interno dei tuoi programmi.

Se vuoi maggiore flessibilità, devi configurare il tuo client CPAN per la tua situazione particolare.

Per le distribuzioni basate su Makefile.PL, utilizzare l’opzione INSTALL_BASE durante la generazione di Makefile:

 perl Makefile.PL INSTALL_BASE=/mydir/perl 

Puoi impostarlo nella tua configurazione CPAN.pm in modo che i moduli si installino automaticamente nella directory della tua libreria privata quando usi la shell CPAN.pm:

 % cpan cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl cpan> o conf commit 

Per le distribuzioni basate su Build.PL, utilizzare l’opzione –install_base:

 perl Build.PL --install_base /mydir/perl 

È ansible configurare CPAN.pm per utilizzare automaticamente anche questa opzione:

 % cpan cpan> o conf mbuild_arg "--install_base /mydir/perl" cpan> o conf commit 

INSTALL_BASE dice a questi strumenti di mettere i tuoi moduli in / mydir / perl / lib / perl5. Vedi Come aggiungere una directory al mio percorso di inclusione (@INC) in fase di runtime? per i dettagli su come eseguire i moduli appena installati.

C’è un avvertimento con INSTALL_BASE, però, poiché agisce diversamente dalle impostazioni PREFIX e LIB che le versioni precedenti di ExtUtils :: MakeMaker sostenevano. INSTALL_BASE non supporta l’installazione di moduli per più versioni di Perl o diverse architetture nella stessa directory. Dovresti considerare se lo vuoi davvero, e se lo fai, usa le precedenti impostazioni PREFIX e LIB. Vedere la documentazione di ExtUtils :: Makemaker per maggiori dettagli.