Pregunta

En el trabajo estoy usando Perl 5.8.0 en Windows.

Cuando usé Perl por primera vez, fui a CPAN, descargué todas las fuentes, hice algunos cambios (¿en el archivo .MAK?para admitir subprocesos o cosas así), e hice nmake / nmake test / nmake install.Luego, poco a poco, descargué módulos individuales de CPAN y realicé el baile nmake.

Entonces, me gustaría actualizar a una versión más reciente, pero la nueva no debe romper ningún script existente.En particular, un montón de módulos de "uso" que instalé deben instalarse en la nueva versión.

¿Cuál es la forma más confiable (y sencilla) de actualizar mi versión actual, asegurando que todo lo que he hecho con nmake dance seguirá ahí después de la actualización?

¿Fue útil?

Solución

Como otros señalaron, comience instalando el nuevo Perl en un lugar separado.Tengo varios Perls instalados, cada uno completamente separado de los demás.

Para hacer eso, tendrás que configurar y compilar las fuentes tú mismo.cuando corres configure, tendrás la oportunidad de especificar el instalador.Di instrucciones detalladas para esto en "Compilación de mi propio Perl" en la edición de primavera de 2008 de The Perl Review.También hay un artículo en Programación Perl eficaz eso te muestra cómo hacerlo.

Ahora, regrese a su distribución original y ejecute cpan -a para crear un archivo de paquete automático.Este es un documento Pod que enumera todas las cosas adicionales que ha instalado, y CPAN.pm sabe cómo usarlo para reinstalar todo.

Para instalar cosas en el nuevo Perl, use la ruta de ese Perl para iniciar CPAN.pm e instale el archivo autobundle que creó.CPAN.pm obtendrá las rutas de instalación correctas desde la configuración de ese Perl.

Mire el resultado para asegurarse de que todo vaya bien.Este proceso no instalará las mismas versiones de los módulos, sino las últimas versiones.

Como para Perla de fresa, hay una versión "portátil" que puedes instalar en algún lugar además de la ubicación predeterminada.De esa manera podría tener el nuevo Perl en un medio extraíble.Puede probarlo en cualquier lugar que desee sin alterar la instalación local.Sin embargo, no creo que esté listo para uso general.El cerveza de bayas La herramienta podría ayudarle a gestionarlo.

Buena suerte, :)

Otros consejos

Consideraría seriamente considerar el uso Perla de fresa.

Puede instalar una segunda versión de Perl en una ubicación diferente.Tendrás que reinstalar cualquier módulo no principal en la nueva versión.En general, las diferentes versiones de Perl no son compatibles con binarios, lo que podría ser un problema si tiene bibliotecas específicas de programas que utilizan componentes XS.Los módulos Pure Perl no deberían verse afectados.

Si permanece dentro de la versión 5.8, todos los módulos instalados que contengan extensiones XS (binarias) seguirán funcionando, ya que la compatibilidad binaria está garantizada dentro de la misma serie 5.8.Si pasó a 5.10, tendrá que volver a compilar todos los módulos que contengan componentes XS.

Todo lo que necesita hacer es asegurarse de que la nueva compilación enumere los directorios de inclusión anteriores en su matriz @INC (que se utiliza para buscar módulos).

Por lo que parece, creo que estás en Windows, en cuyo caso las rutas @INC actuales se pueden ver con

perl -le "print for @INC"

Asegúrese de orientar su nueva versión de Perl en otro directorio.Felizmente coexistirá con la versión anterior, y esto le permitirá elegir qué instalación de Perl se utiliza;es sólo una cuestión de resolver su pedido PATH.Tan pronto como se inicia un intérprete de Perl, sabe dónde buscar el resto de sus módulos.

Strawberry Perl es probablemente la mejor distribución de Windows en estos días para desarrollar la suya propia.

Creo que la respuesta a esto implica virtualización De algún tipo:

  1. Configure una copia exacta de su máquina en vivo actual.Actualice Perl utilizando las mismas ubicaciones de directorio y estructuras que utiliza actualmente.
  2. Revise sus scripts probándolos en la nueva imagen.
  3. Una vez que estés satisfecho, activa el interruptor.

La idea detrás de esto es que probablemente existan todo tipo de dependencias y suposiciones sutiles en las que no has pensado.Aunque es poco probable, la última versión de un módulo en particular (posiblemente incluso un módulo principal, aunque eso es aún más improbable) podría tener una diferencia sutil en comparación con el que estaba usando.A menos que haya revisado exhaustivamente todo su código base, es muy posible que haya un módulo en particular que solo sea necesario en determinadas circunstancias.

Puede intentar detectar esto creando una lista de todos sus scripts, una lista que debería tener de todos modos, a fuerza de que todo su código esté bajo control de versiones (usted son usando control de versiones, p.e. Subversión, ¿sí?) - y repitiéndolo, ejecutando perl -c en cada guión.p.ej. este guión.Ese tipo de prueba automatizada es invaluable:puedes ponerlo en marcha, irte a tomar un café o lo que sea y volver para comprobar si todo funcionó.Las primeras veces probablemente encontrarás un módulo oscuro que habías olvidado, lo cual está bien:El objetivo de automatizar esto es que No tienes que hacer el trabajo pesado de comprobar cada uno de los guiones.

Cuando lo hice, instalé el más nuevo en un directorio separado.Hay un poco de confusión adicional al ejecutar dos versiones, pero definitivamente ayuda a garantizar que todo funcione primero y proporciona una forma rápida de volver a la anterior en caso de necesidad.También configuré Apache para ejecutar dos servicios separados, de modo que pudiera jugar con el Perl más nuevo en un servicio sin tocar el de producción en el antiguo Perl.

Probablemente sea mucho más prudente, en retrospectiva, instalarlo en una computadora separada y realizar las pruebas allí.Registre cada cambio de configuración que necesite realizar.

No estoy seguro de cómo crearlo usted mismo; siempre usé archivos binarios preempaquetados para Windows.

No estoy seguro de entender exactamente lo que estás preguntando.¿Tiene una lista de los cambios que realizó en el archivo MAKE 5.8?¿O la pregunta es cómo obtener dicha lista?¿También pregunta cómo saber qué paquetes superiores a la instalación base obtuvo de CPAN?¿También pregunta cómo probar que sus cambios personalizados no rompan esos paquetes si los obtiene de CPAN nuevamente?

¿Por qué no utiliza ActivePerl y su herramienta "ppm" para (re)instalar módulos?

alt text

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top