2011-05-10 13 views
11

Puede tratarse de una pregunta duplicada, así que perdone mis habilidades de búsqueda.Descarga de todas las dependencias para un módulo de Perl

Necesito descargar todas las dependencias para un módulo Perl específico (local :: lib y otros) en una máquina Windows/cygwin (con Perl 5.10.1) y moverlas a una máquina Solaris (con Perl 5.8.8) que no tiene conexión a Internet

He visto minicpan sugerido en this question, pero la creación de una réplica completa de un CPAN no es una opción ya que estoy en una red corporativa con ancho de banda limitado. CPAN :: Mini tiene algunas opciones de filtrado, pero trata de rutas en lugar de dependencias.

¿Hay alguna manera de lograr esto?

Gracias,

Ivan

Respuesta

7

Mira la utilidad cpan2dist contenida en la distribución de Perl. (Está en /usr/bin en la instalación de Cygwin.)

cpan2dist --help 

creará una distribución de tipo FMT de los módulos especificados en la línea de comandos, y todos sus requisitos previos.

También puede crear una distribución de tipo FMT desde un archivo local y todo lo que hay requisitos previos

no lo he probado, pero suena como lo que está buscando.

+1

que estaba esperando el típico "perl -e -MCPAN 'módulo de instalación'" respuesta y me sorprendió gratamente! Tendrá que probar esto alguna vez. – ericslaw

+0

Gracias! Estoy aceptando esta respuesta, pero no lo he intentado solo (solo usé una máquina diferente con acceso a Internet :-P). Pero por lo que he visto en las opciones de cpan2dist, aún tienes que compilar todos los paquetes y dependencias. Utilicé el siguiente comando: 'cpan2dist --format CPANPLUS :: Dist :: Build --buildprereq --skiptest --keepsource local :: lib' y me dio errores al compilar requisitos previos, así que no busqué más. Si alguien tiene una forma más limpia de descargar las fuentes, házmelo saber. – imiric

3

cpanminus tiene una opción para hacer exactamente eso: --scandeps y --save-dists. Lea más sobre esa opción en una publicación de blog que explica the new features of cpanm 1.4.

+1

Gracias, esto se ve bien. Pero todavía tengo el problema que tuve antes con las diferentes versiones de Perl. Ejecutando 'cpanm --scandeps --save-dists -L/tmp/perl5 local :: lib' con Perl 5.12.3 produce local :: lib solo porque todas las otras dependencias ya están en el núcleo. Pero necesitaría una forma de especificar para qué versión de Perl quiero probarme; algo así como una herramienta automatizada para descargar el resultado de http://deps.cpantesters.org/. Lo cual podría no ser tan mala idea después de todo ... – imiric

Cuestiones relacionadas