2008-11-04 20 views
64

Tengo la tarea de replicar un entorno de producción para crear muchos entornos de prueba/sesión.¿Cómo puedo instalar una versión específica de un conjunto de módulos Perl?

Una de las cosas que tengo que 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.

Respuesta

36

Haga su propio espejo CPAN con exactamente lo que desea. Stratopan.com, un servicio, y Pinto, herramientas que se basan en, pueden ayudarlo a hacer eso.

Las herramientas de 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, quiere 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 my talks on Slideshare para obtener ejemplos básicos, y algunos de my videos on 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 programa 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 se encuentra 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 pueden ayudarle a compilar el archivo de índice correcto. Todavía es un poco joven también, pero de nuevo, si necesitas algo especial, solo pregunta.

+1

Gracias Brian, actualmente estoy en el proceso de crear un mini cpan local, luego insertaré en nuestros módulos locales + aquellos que necesito degradados a versiones específicas. –

101

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

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

Lance una URL a BackPAN en su lista de URL y puede instalar cualquier versión anterior.

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

esto es en el CPAN.pm FAQ en "cómo se instala una 'versión para desarrolladores' de un módulo?"

+0

Agradable. Esto me permitió solucionar un problema de compatibilidad con un servidor que aún no puedo actualizar. ¡Gracias! –

+0

no creo que la URL funcione en estos días. pero este: http://backpan.perl.org/ – flamey

+0

'install MSCHWERN/Test-Simple-0.62.tar.gz' @Schwern Creo que es necesario cortar el prefijo M/MS para obtener para encontrar el tarball –

7

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

Carton es importante mencionarlo 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 modificados por 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).

4

Stratopan.com es otra alternativa. Stratopan proporciona CPAN privadas en la nube. Puede llenar su repositorio 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 repositorio cambia solo cuando usted decide cambiarlo, por lo que siempre obtendrá las versiones de los módulos que desee.

Descargo de responsabilidad: Yo opero Stratopan.

14
cpan install App::cpanminus 
cpanm Your::[email protected] 

(cartón, como se indica en otras respuestas, utiliza cpanm debajo para resolver los requisitos de la versión explícitas.)

+0

Esta es una gran respuesta para específicamente cómo "instalar ** una ** versión específica de ** un ** módulo Perl" (como la pregunta apareció en un punto). Especialmente si ya estás usando cpam. – Randall

2

Parece que la creación de un cpanfile una lista de todos sus módulos y versiones deseadas (utilizando la sintaxis == <version> a bloquearlo a un lanzamiento específico) podría servir bien aquí también. 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 CPAN privado no le permitiría hacer (sin crear múltiples duplicados) .

Cuestiones relacionadas