CPAN e CPAN.pm

CPAN ovvero Comprehensive Perl Archive Network è un repository per moduli, documentazione, ports, script e quant'altro tutto relativo al perl, suddiviso in varie categorie per agevolare il download e la ricerca delle risorse.

CPAN.pm è il modulo Perl che permette di eseguire ricerche, scaricare, compilare moduli Perl dal sito cpan.org.
Lo scopo di questo modulo è quello di automatizzare il processo di installazione di un modulo Perl, il quale viene scaricato, scompresso in una directory dedicata e successivamente compilato e installato.
Per agevolare l'utente nell'uso di questa utility il modulo gestisce tramite un "session manager" cio che è stato scaricato, compilato e installato e tramite un "cache manager" gestice anche lo spazio su disco occupato dalle risorse installate.
Sono possibili due metodi di utilizzo del modulo, quello interattivo che permette di avere a disposizione una shell particolare in cui poter lanciare i comandi di ricerca, compilazione e installazione oppure in modalità batch mode.

Interactive Mode
Per avviare la modalità interattiva occore lanciare il seguente comando:
[neo@dido neo]$ perl -MCPAN -e shell
Nel caso in cui fosse la prima volta che viene lanciato il comando, vengono presentati all'utente alcuni quesiti per la configurazione del modulo, indispensabili per lo scaricamento e la compilazione dei moduli.
[neo@dido neo]$ perl -MCPAN -e shell
/home/neo/.cpan/CPAN/MyConfig.pm initialized.
CPAN is the world-wide archive of perl resources. [...]
Richiede se si vuole effettuare una configurazione manuale
Are you ready for manual configuration? [yes] yes
Selezione della cache directory
I see you already have a  directory
    /home/neo/.cpan
Shall we use it as the general CPAN build and cache directory?

CPAN build and cache directory? [/home/neo/.cpan]  
Configurazione dello spazio massimo da riservare alla cache
Cache size for build directory (in MB)? [10]
Opzioni per lo scanning della cache per ottimizzare le funzioni di CPAN
Perform cache scanning (atstart or never)? [atstart]
Configurazione per la compilazione di moduli che hanno dipendenze, si ha la possibilità di downlodare, compilare e installare le dipendenze in modo del tutto automatico. Scelta consigliata.
Policy on building prerequisites (follow, ask or ignore)? [follow]
Verifica del path di alcuni comandi e programmi
Where is your gzip program? [/bin/gzip]
Where is your tar program? [/bin/tar]
Where is your unzip program? [/usr/bin/unzip]
Where is your make program? [/usr/bin/make]
Where is your lynx program? [/usr/bin/lynx]
Where is your ncftpget program? [/usr/bin/ncftpget]
Where is your ftp program? [/usr/bin/ftp]
What is your favorite pager program? [/usr/bin/less]
What is your favorite shell? [/bin/bash]
Opzioni standard da passare ai comandi per la compilazione come il prefisso predefinito
Parameters for the 'perl Makefile.PL' command? []
Parameters for the 'make' command? []
Parameters for the 'make install' command? []
Settaggio del time-out per il comando Makefile.pl
Timeout for inactivity during Makefile.PL? [0]
Settaggio di eventuali proxy server per accedere alle risorse.
Your ftp_proxy?  
Your http_proxy?  
Your no_proxy?  
Download del file contenente i mirror site di cpan.org
You have no /home/neo/.cpan/sources/MIRRORED.BY
  I'm trying to fetch one
CPAN: LWP::UserAgent loaded ok
Fetching with LWP:
  ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY
MIRRORED.BY:                                           125.78 kB   37.56 kB/s  
Settaggio del mirror da cui eseguire i download delle risorse
(1) Africa
(2) Asia
(3) Central America
(4) Europe
(5) North America
(6) Oceania
(7) South America
[...]
(1) Austria
...
(15) Italy
...
(31) United Kingdom
Select your country (or several nearby countries) []

(1) ftp://cis.uniRoma2.it/CPAN/
(2) ftp://ftp.edisontel.it/pub/CPAN_Mirror/
(3) ftp://ftp.flashnet.it/pub/CPAN/
(4) ftp://ftp.unina.it/pub/Other/CPAN/CPAN/
(5) ftp://ftp.unipi.it/pub/mirror/perl/CPAN/
(6) ftp://gusp.dyndns.org/pub/CPAN
(7) ftp://softcity.iol.it/pub/cpan
(8) http://cpan.nettuno.it/
Select as many URLs as you like []
Settaggio del Wait server
Your favorite WAIT server?
   [wait://ls6.informatik.uni-dortmund.de:1404]
commit: wrote /home/neo/.cpan/CPAN/MyConfig.pm
Ed infine la shell da dove poter inviare i comandi
cpan shell -- CPAN exploration and modules installation (v1.52)
ReadLine support available (try ``install Bundle::CPAN'')


Batch mode
Il modulo CPAN.pm in modalità batch mode (utilizzato in uno script Perl) viene inizializzato come qualsiasi altro modulo perl. Nell'esempio che segue viene inizializzato il modulo e viene installato l'utility MakeMaker
use CPAN ;
my $obj = CPAN::Shell->install ('ExtUtils'::MakeMaker');

Privacy Policy