Domanda

Ecco la mia situazione: non so quasi nulla di Perl ma è l'unica lingua disponibile su un porting machine. Ho solo i permessi per scrivere nella mia area di lavoro locale e non nella posizione di installazione di Perl. Devo usare il Parallel :: ForkManager modulo Perl da CPAN

Come posso usare questo Parallel :: ForkManager senza fare un'installazione centrale? Esiste una variabile d'ambiente che posso impostare in modo che si trovi?

Grazie

JD

È stato utile?

Soluzione

Da perlfaq8: Come posso mantenere la mia directory modulo / libreria? :

Quando costruisci moduli, indica a Perl dove installare i moduli.

Per le distribuzioni basate su C, 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 libreria privata quando si utilizza la shell CPAN.pm:

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

Per le distribuzioni basate su C, utilizzare l'opzione --install_base:

perl Build.PL --install_base /mydir/perl

Puoi configurare CPAN.pm per usare 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 inserire i tuoi moduli F. Vedi L per i dettagli su come eseguire il tuo nuovo moudles installati.

C'è un avvertimento con INSTALL_BASE, però, poiché agisce diversamente dalle impostazioni PREFIX e LIB delle versioni precedenti ExtUtils :: MakeMaker ha sostenuto. INSTALL_BASE non supporta installazione di moduli per versioni multiple di Perl o diverse architetture nella stessa directory. Dovresti considerare se tu lo voglio davvero e, se lo fai, usa PREFIX e LIB precedenti impostazioni. Vedere la documentazione di ExtUtils :: Makemaker per maggiori dettagli.

Altri suggerimenti

Dai un'occhiata a questo post da Mark Dominus

Estratto:

  
      
  • Imposta PREFIX = X durante la creazione del Makefile
  •   
  • Imposta INSTALLDIRS = vendor e VENDORPREFIX = X durante la creazione del Makefile      
        
    • O forse invece di VENDORPREFIX devi impostare INSTALLVENDORLIB o qualcosa del genere
    •   
    • O forse invece di impostarli durante la creazione del Makefile è necessario impostarli durante l'esecuzione del target make install
    •   
  •   
  • Imposta LIB = X / lib durante la creazione del Makefile
  •   
  • Usa PAR
  •   
  • Usa local :: lib
  •   

Mark offre anche un'altra soluzione nel suo blog che richiede un po 'più di spazio per descriverlo, ma si riduce a eseguire make e make test ma non a installarlo e quindi a usare le cose in blib /.

Scarica il modulo del pacchetto CPAN in una cartella:

wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz
gunzip Parallel-ForkManager-1.06.tar.gz
tar -xvf Parallel-ForkManager-1.06.tar

prima di creare una cartella nella home per archiviare i moduli locali, ora vai nella cartella scaricata ed esegui i seguenti mm:

perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install

ottieni il percorso per ForkManager dalla cartella installata, / home / nomeutente / myModules e individuare la cartella parallela e ottenere il percorso completo per questo.

Ora nel tuo file perl mettili all'inizio

use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;

- Dovrebbe farlo.

C'è la variabile d'ambiente PERL5LIB e -I sulla riga di comando quando si tratta di usare il modulo. Esistono meccanismi per dire a CPAN e CPANPLUS.

Ci sono informazioni nella domanda 5 del manuale CPAN (perldoc CPAN, oppure guarda CPAN stesso) .

use lib 'directory';
use Parallel::ForkManager;

È possibile utilizzare l'opzione della riga di comando -I (maiuscolo i) seguita dalla directory in cui si posizionerà il modulo; oppure prova " usa lib " direttiva seguita dalla directory.

perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl

usa l'opzione cpanm -l $ DIR_NAME .

Valuta l'utilizzo di cpanminus, un suggerimento su quest'altra discussione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top