Lo normal es usar un lugar (un servidor aparte, o uno de estos dos servidores) como repositorio local de los módulos que vamos a necesitar, y bajar solo a él desde CPAN. Para eso, se suele usar la distribución
CPAN::Site, que trae el programa
cpansite, con el que se puede crear y gestionar de forma fácil una instalación así.
Para conocer la lista de módulos instalados, prueba a ejecutar el comando
instmodshen tu sistema. Es uno de los programas que vienen de base con Perl.
Puedes sacar la lista completa de módulos, pedir información de dónde está instalado cada uno de ellos, qué archivos contienen los directorios, comprobar el estado de los archivos .packlist...
De forma programada, puedes hacerlo con este programa:
Using perl Syntax Highlighting
use strict;
use warnings;
use ExtUtils::Installed;
my $instmod = ExtUtils::Installed->new();
foreach my $module ($instmod->modules()) {
my $version = $instmod->version($module);
if ( $version ) {
print "$module installed, version $version\n";
} else {
print "$module installed, version not available\n";
}
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
También se puede usar el comando
cpanp. Con la opción
b, cpanp crea un archivo "bundle" con la configuración actual, incluyendo la lista de módulos instalados. Por ejemplo, lo creará en un sitio parecido a este:
~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm
Esto lo haces en el ordenador donde estabas trabajando. Así tienes ya la lista de todos los módulos que funcionan.
Luego, llevas el fichero Snapshot_* a la otra máquina, y ejecutas
cpanp file://Snapshot_2011_05_18_00.pmque hará instalar todos los módulos que tenía el primer ordenador.
Si en vez de
cpanp estás usando el comando
cpan, entonces se hace algo parecido:
cpan -acopias el archivo que está dentro de ~/.cpan/Bundle a la otra máquina, y allí haces
cpan -i Bundle::nombre_del_archivo_creado_menos_el_punto_pm'El método de copiar los directorios de uno a otro debería funcionar también, si los dos perl (los intérpretes) son de la misma versión, y están en máquinas con la misma arquitectura. No hay problemas con los módulos escritos en puro Perl, pero sí podría haberlos en los que necesitan bibliotecas compiladas.