haskell - por - ¿Cómo se puede hacer una copia privada de Hackage?
la pirateria es ilegal (4)
Me gustaría hacer una instantánea de la base de datos global de Hackage en una más pequeña congelada para las implementaciones de mi empresa. ¿Cómo se puede copiar más fácilmente algún segmento de Hackage en un servidor privado?
Aquí hay un script que lo hace de la manera más sencilla posible: https://github.com/jamwt/mirror-hackage
También puede usar el MirrorClient directamente desde el repositorio de hackage2: http://code.haskell.org/hackage-server/
Aunque no es un segmento de Hackage, he escrito un script de bash que descarga todo el Hackage, lo que puede configurarse fácilmente como un espejo utilizando un servidor HTTP. Además, descarga todas las cosas necesarias como compiladores de GHC listos para ser utilizados con Stack .
Actualmente, un espejo completo de Hackage ocupa ~ 10GiB (~ 100000 paquetes de todas las versiones) y cosas relacionadas con Stack como los compiladores de GHC ~ 21GiB (~ 200 archivos). Las ejecuciones sucesivas del script omiten el material ya descargado, por lo que solo descarga uno nuevo. Por lo tanto, es una forma muy conveniente de "vivir sin conexión" y sincronizarse cuando está en línea.
Puedes descargar Hackage con el hackage-mirror.sh de hackage-mirror.sh . Necesitarás ''rizo'' para que se ejecute. Si está utilizando una distribución Linux basada en Debian, puede instalar curl escribiendo apt-get install curl .
Esta no es una respuesta dos a la pregunta en el título, sino una respuesta a mi interpretación de lo que el OP desea lograr.
Dependiendo de lo que desee para el nivel de estabilidad en su círculo de producción, puede abordar el problema de varias maneras.
He dividido las dependencias en dos partes, las cosas que puedo usar que están en la plataforma de haskell (mantener cada plataforma utilizada en la producción) y luego solo uso una pequeña cantidad de paquetes fuera de eso y no dejes que nadie (incluyéndote a ti) agregue Más paquetes en su árbol de dependencias solo por la pereza (como desarrollador). Con estos paquetes adicionales, se utiliza algún tipo de script y se recopila de hackage (bloqueo a versión) utilizando cabal fetch. Mantenlos a salvo. Cree un script de instalación que use sus paquetes seguros y si se agrega una nueva máquina (desarrollador) a su equipo, use ese script.
yackage es excelente, pero todo depende de cómo envíe su producto. Si tiene versiones anteriores en producción, necesita tener una configuración de yackage para cada versión y eso podría ser bastante molesto después de un par de años.