2011-05-23 9 views
11

Tengo Perl 5.13.4 con una gran colección de módulos de CPAN instalados.¿Cómo usar un libro de correos CPANPLUS para actualizar una nueva versión de Perl?

Acabo de compilar Perl 5.14.0. Me gustaría instalar (recompilar) todos los módulos en 5.13.4 en 5.14.0.

Puedo/he generado un paquete de los módulos instalados con 'cpanp' y la opción 'b'; Ahora tengo un archivo ~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm.

  • ¿Cuál es el comando para utilizar en la versión 5.14.0 de 'cpanp' que va a pasar por ese paquete de instantáneas y garantizar 5.14.0 ha instalado todos los módulos?

  • O, si la combinación de cpanp y un paquete no es la forma adecuada, ¿cuál es la forma más fácil de replicar (volver a compilar) los módulos instalados en la versión anterior de Perl para la nueva versión de Perl? (Si CPAN puede tratar con el archivo de paquete, lo usaré -. Es el resultado que me importa, no el mecanismo utilizado para lograrlo)

(hice echar un vistazo rápido a la lista de preguntas para 'paquete de perl cpanplus' aquí en SO sin encontrar la información que busco. También he mirado 'perldoc cpanp' en varias ocasiones y no pude encontrar la información que busco. Ese no es el lo mismo que decir "la información no está allí", simplemente puede significar que no lo he visto.)

Respuesta

8

Un archivo de paquete es una cosa especial de CPAN que, para mi sorpresa, tampoco funciona. en CPANPLUS. Es por eso que nadie habla de los paquetes de CPANPLUS y no se pudo encontrar nada. Entonces emplee CPAN. Primero averigüe dónde está su raíz de CPAN, de manera predeterminada es ~/.cpan o ~/.local/share/.cpan en un sistema compatible con Free Desktop XDG. Altere las instrucciones en consecuencia.

mkdir -p ~/.cpan/Bundle 
mv ~/.cpanplus/5.13.4/dist/autobundle/Snapshot_2011_05_18_00.pm ~/.cpan/Bundle 
cpan Bundle::Snapshot_2011_05_18_00 # DTRT 

A medida que hablaban de recompile, CPAN has that command y se puede emitir desde el Shell de CPAN o como llamada a la API desde la línea de comandos, pero es útil sólo si tiene módulos desde una ubicación fija a través de versiones de Perl.

+0

Esto funcionó muy bien, gracias. Te daría votos adicionales si esa fuera una opción. Mencioné/especifiqué 'recompilar' para indicar que esperaba reconstruir los módulos desde el origen, una solución que proporcionaba acceso a las versiones antiguas, ya compiladas del nuevo Perl, no cumplía con mis requisitos. –

2

BOLSAS DE CPANPLUS funcionan bien a partir de ahora. Solo asegúrese de hacer referencia al paquete con 'file://' con el prefijo de la ruta completa del paquete.

sin duda habrá algunos diddlin' que tendrá que ver con algunos módulos, pero en su mayor parte que debería ser completamente factible.

+0

Gracias: I (por fin) tengo alrededor para instalar 5.14.2, y después de la creación de mi instantánea en 5.14.1, yo era capaz de ejecutar el 'cpanp' 5.14.2 y ejecute' File I: Los usuarios ////jleffler/.cpanplus/5.14.1/dist/autobundle/Snapshot_2012_05_04_00.pm' y ciertamente funcionó en el sentido de leer el archivo y comenzar las compilaciones. Terminé instalando manualmente 'CPANPLUS' y' Module :: Signature' ya que la ausencia de estos causó algunos problemas, pero el prefijo 'file: //' era información clave que no había visto antes. Gracias de nuevo. –

0

Alguna información extra que pueda ahorrar un poco de pelo a otras personas.

  1. Si usted tiene un archivo de instantánea $HOME/Snapshot_2013_12_23_00.pm, puede ejecutar:

    cpanp -i file://$HOME/Snapshot_2013_12_23_00.pm 
    

    y la instalación comenzará.

  2. Al hacer esto, Perl creará un archivo como:

    $HOME/cpan/authors/id/UNKNOWN-ORIGIN/Snapshot_2013_12_23_00.pm 
    

    (La ubicación exacta dependerá del lugar donde ha configurado su repositorio CPANPLUS; la mina entra en $HOME/cpan.)

    Si necesita hackear el archivo de instantánea (porque algún módulo no se compilará), puede editar y especificar el nombre de archivo en la línea de comando hasta que esté azul en la cara y completamente sin pelo, y se ganó ' t hacer la más mínima difenrencia porque a pesar de que le dice que mire en $HOME, CPANPLUS está mirando el archivo que copió en el directorio UNKNOWN_ORIGIN. Eliminar el archivo ciertamente funciona; probablemente también puedas editarlo.

Cuestiones relacionadas