peru pagina oficial manager library perl cpan

pagina - perl package manager



Instale módulos Perl con muchas dependencias en una máquina sin acceso a la red CPAN (4)

La forma más eficiente de lejos es hacer un minicpan , instalar cpanm en la máquina linux y alias localcpanm algo como esto:

alias localcpanm=''cpanm --mirror file:///Users/Shared/cpan/ --mirror-only''

Utilicé esta técnica en viajes largos en tren con acceso parche a la red con gran éxito.

Estoy tratando de instalar la máquina DateTime en un servidor Linux. Desafortunadamente, este servidor Linux tiene una política de acceso restringido a la red que me impide usar el shell CPAN directamente para descargar contenido o instalar cpanminus. Cambiar la política de acceso está fuera de mi control, entonces estoy buscando una solución alternativa. Tampoco tengo acceso de root a este servidor Linux.

Sin embargo, puedo descargar cualquier cosa a la máquina de Windows de mi trabajo y subirlo a un archivo compartido en este servidor. Así que comencé a desplegar las dependencias de DateTime una por una. Me gustaría descargar un módulo, en algún momento tendrá Makefile.PL, en algún momento tendrá Build.PL. Luego rebase cada Build o Makefile a mi INSTALL_BASE, pruebo cada módulo. Lo hice para unos 20 módulos, y los árboles parecen expandirse a clases cada vez más pequeñas sin un final a la vista ...

Espero que puedas decirme una mejor manera. ¿Hay alguna manera de iniciar una descarga desde una máquina con acceso CPAN (es decir, mi cuadro de Windows) de todas las dependencias DateTime en un paquete gigante de Perl, subirlo al servidor Linux y ejecutar CPAN allí (sin acceso a la red) para poner las cosas en el lugar correcto? Gracias.


Hay algunas soluciones para este problema, vea por ejemplo Carton, que es como el bundler de ruby ​​o, de lo contrario, Pinto que pretende ser su CPAN privado (según tengo entendido).


El primer paso es descargar automáticamente todas las dependencias. Puede usar cpanm para hacer esto en su máquina conectada a la red:

cpanm -L /dev/null --save-dists dists --scandeps DateTime

Esto genera una lista de dependencias pero, lo que es más importante, las descarga en el directorio dists . El -L /dev/null asegura que no presta atención a los módulos ya instalados.

Copie los dists como están en su caja restringida.

Luego, use cpanm en su cuadro restringido para realizar la instalación local:

cpanm --mirror file:///path/to/dists -L foo DateTime

donde /path/to/dists es la ruta absoluta al directorio dists . Esto instalará cosas en el directorio foo .


Una solución que uso en el trabajo es tener un servidor de desarrollo con perlbrew, un módulo Perl + y la aplicación por aplicación y todo esto en un repositorio git. En las máquinas de producción, el acceso al repositorio de git es todo lo que se necesita para implementar la aplicación y cambiar de una a otra mediante etiquetas.