¿Cómo puedo instalar una versión específica de un conjunto de módulos Perl?

Tengo la tarea de replicar un entorno de producción para crear muchos entornos de prueba / sesión.

Una de las cosas que debo hacer es crear Perl, con todos los módulos que se han instalado (incluidos los módulos internos y externos) a lo largo de los años. Podría usar CPAN.pm autobundle, pero esto dará como resultado que el entorno de prueba tenga versiones mucho más nuevas de los módulos externos que tiene la producción.

Cuál es la forma más fácil / mejor de obtener e instalar (una gran cantidad) de módulos Perl específicos de la versión.

Haga su propio espejo CPAN con exactamente lo que quiere. Stratopan.com , un servicio y Pinto , herramientas que se construyen a partir de, pueden ayudarlo a hacer eso.

Las herramientas CPAN solo instalan la última versión de cualquier distribución porque PAUSE solo indexa la última versión. Sin embargo, puede crear su propio CPAN privado que tenga exactamente las distribuciones que desee. Una vez que tenga su propio espejo CPAN con solo lo que desea, apunte sus herramientas CPAN solo a ese espejo para que solo instale esas versiones. Más de eso en un minuto.

Ahora, quieres tener varias versiones de eso. Puede crear tantos espejos como desee, y también puede poner los espejos en control de fuente para que pueda verificar cualquier versión del espejo que desee.

Herramientas como CPAN :: Mini :: Inject pueden ayudarlo a configurar su propio CPAN. Consulte mis charlas sobre Slideshare para ver ejemplos básicos y algunos de mis videos en Vimeo para algunas de las demostraciones. Mire cualquier cosa que tenga “CPAN” o “BackPAN” en el título. Creo que también podría tener algunas cosas al respecto en The Perl Review , o debería hacerlo en el próximo número. 🙂

Últimamente, he estado trabajando en un progtwig llamado dpan (para DarkPAN) que puede examinar directorios aleatorios, encontrar distribuciones de Perl en ellos y crear la estructura y los archivos de índice que necesita. Ejecutas dpan, obtienes una URL para apuntar a tu cliente de CPAN y listo. Es parte de mi proyecto MyCPAN-Indexer, que está en Github . No está listo para el uso público sin supervisión porque trabajo principalmente con clientes corporativos para personalizar su configuración. Si estás interesado en eso, no dudes en hacerme preguntas.

Además, recientemente lancé CPAN :: PackageDetails que puede ayudarlo a crear el archivo de índice correcto. Todavía es un poco joven también, pero de nuevo, si necesitas algo especial, solo pregunta.

bdfoy tiene la mejor solución a gran escala, pero si solo desea instalar unos pocos módulos, puede solicitar al shell CPAN que instale una distribución específica haciendo referencia a una ruta a un archivo tar (relativo a la parte superior del árbol CPAN).

cpan> install MSCHWERN/Test-Simple-0.62.tar.gz 

Lanza una URL a BackPAN en tu lista de URL y puedes instalar cualquier versión anterior.

 cpan> o conf urllist push http://backpan.perl.org/ 

Esto está en las preguntas frecuentes de CPAN.pm en “¿cómo instalo un ‘DESARROLLO DE DESARROLLO’ de un módulo?”

 cpan install App::cpanminus cpanm Your::Module@1.23 

(Carton, como se hace referencia en otras respuestas, utiliza cpanm debajo para resolver los requisitos de versión explícita).

[Han pasado casi cinco años y esta es una pregunta bien hecha y bien respondida que ha tenido muchas opiniones. Dado que esta página aún debe aparecer en las búsquedas de Google, una actualización no puede dañar.]

Carton vale la pena mencionar aquí. Carton es una herramienta relativamente reciente en el mismo estilo que App::cpanminus , App::cpanoutdated , perlbrew , et. Alabama. El autor (Miyagawa) lo llama calidad “alfa”, pero incluso en su estado actual, el cartón ayuda a simplificar el mantenimiento de múltiples entornos de módulos ajustados a la versión en todas las máquinas.

Pinto también es otra herramienta reciente relevante para algunas de las respuestas (de hecho, uno de los encuestados es un colaborador).

Stratopan.com es otra alternativa. Stratopan proporciona CPAN privadas en la nube. Puede llenar su repository de Stratopan con versiones específicas de los módulos (y sus dependencias) y luego instalarlos usando la cadena de herramientas estándar de Perl. El repository cambia solo cuando decide cambiarlo, por lo que siempre obtendrá las versiones de los módulos que desee.

Descargo de responsabilidad: Opero Stratopan.

Parece que la creación de un cpanfile que cpanfile todos sus módulos y versiones deseadas (usando la syntax == para bloquearlo en una versión específica) también podría servirle bien aquí. Eso significaría usar Carton o cpanm para instalar los módulos.

Hacer esto tendría el beneficio de poder modificar el archivo rápidamente / fácilmente para probar la actualización de módulos específicos en un entorno de desarrollo o de transición, algo que un espejo de CPAN privado no le permitiría hacer (sin crear múltiples réplicas).