Pregunta

Parece que la mayoría de los instaladores para Perl se centran en la instalación de módulos Perl, no de aplicaciones. Cosas como ExtUtils :: MakeMaker y Module :: Build son muy adecuadas para los módulos, pero requieren un trabajo adicional para las aplicaciones web.

Idealmente, sería bueno poder hacer lo siguiente después de verificar la fuente del repositorio:

  • Han detectado dependencias faltantes
  • Descargue e instale dependencias desde CPAN
  • Ejecuta un comando para " Crear " la fuente en un estado final (realice cualquier análisis de origen o configuración necesaria para el entorno local).
  • Ejecute un comando para instalar los archivos construidos en las ubicaciones apropiadas. No solo los módulos de Perl, sino también elementos como los archivos de plantilla (.tt) y los scripts CGI, JS y los archivos de imagen que deberían estar accesibles desde la web.
  • Asegúrese de que los permisos adecuados estén configurados en los archivos instalados (y en el contexto de SELinux si es necesario).

Ahora mismo tenemos un sistema basado en Module :: Build que hace la mayor parte de esto. El trabajo fue realizado por mi compañero de trabajo que estaba aprendiendo a usar Módulo :: Crear en ese momento, y nos gustaría recibir algunos consejos sobre cómo generalizar nuestra solución, ya que es un derecho bastante específico de la aplicación. ahora. En particular, nuestro sistema requiere que instalemos dependencias a mano (aunque las detecte).

¿Hay algún sistema en particular que haya usado que haya sido particularmente exitoso? ¿Tiene que escribir un instalador basado en Módulo :: Generar o ExtUtils :: MakeMaker que sea específico para su aplicación, o que haya algo más general disponible?

EDITAR: para responder a las preguntas de Brian a continuación:

  • Podemos iniciar sesión en las máquinas
  • No tenemos acceso de root a las máquinas
  • Las máquinas son todas (aparentemente) compilaciones idénticas de RHEL5 con SELinux habilitado
  • Actualmente, las personas que instalan las máquinas son solo programadores de nuestro grupo, y nuestra fuente no está disponible para el público en general. Sin embargo, es posible que nuestra fuente pueda ser instalada en las máquinas de otra persona en nuestra organización, para que la instalen sus programadores o personal de sistemas.
  • Nos instalamos retirándonos del repositorio, aunque nos gustaría tener la opción de usar un archivo distribuido (ver más arriba).
¿Fue útil?

Solución

¿Cuáles son sus limitaciones para instalar aplicaciones web? ¿Puedes iniciar sesión en la máquina? ¿Todas las máquinas están ejecutando lo mismo? ¿Las personas están instalando compañeros de trabajo de aplicaciones web o personas aleatorias del público en general? ¿La gente está instalando estos administradores de sistemas, programadores, administradores web o algo más? ¿Instala mediante distribución de un archivo o desprotegido del control de código fuente?

Para la mayoría de mis cosas, que involucran a administradores de sistemas familiarizados con la instalación de Perl en entornos de control, solo uso MakeMaker . Es fácil hacer que haga todas las cosas que enumeró si sabe un poco sobre MakeMaker . Si quieres saber más sobre eso, haz otra pregunta. ;) Module :: Build es igual de fácil y el camino a seguir si aún no te gusta usar MakeMaker .

Module :: Build sería una buena manera de manejar muchas situaciones diferentes si la gente tiene una idea moderada sobre la línea de comandos y la instalación del software. Tendrá mucha flexibilidad con Module :: Build , pero también un poco más de trabajo. Y, la herramienta cpan (que viene con Perl), puede instalarse desde el directorio actual y manejar las dependencias por usted. Simplemente dile que instale el directorio actual:

 $ cpan .

Si solo tiene que instalar en una sola plataforma, probablemente le resulte más fácil crear un paquete en el formato nativo. Incluso podría hacer que Module :: Build haga ese paquete para que los desarrolladores tengan la flexibilidad de Module :: Build , pero los instaladores tienen la facilidad del proceso nativo. Seguir con Module :: Build también significa que puede crear diferentes paquetes para diferentes plataformas desde una única herramienta de compilación.

Si las personas que instalan la aplicación web realmente no tienen idea de las líneas de comandos, CPAN y otras cosas, probablemente querrá usar un empaquetador e instalador que no los asuste o les haga pensar sobre lo que está sucediendo. , y puede informarle problemas con precisión de manera automática.

Como señala Dave, usar un espejo CPAN real siempre te ofrece la última versión de un módulo, pero también puedes hacer tu propio " falso " CPAN refleja con exactamente las distribuciones que desea y desde allí se instalan las herramientas normales de CPAN. Para nuestros clientes, hacemos " CPAN en un CD " (aunque las unidades de memoria también son buenas ahora). Con un simple " run me " Todos los scripts se instalan exactamente en las versiones que necesitan. Ver, por ejemplo, mi http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007"> Haciendo mi propia charla de CPAN si estás interesado en eso. De nuevo, considera a la audiencia cuando piensas en eso. No es algo que le darías al público en general.

Buena suerte, :)

Otros consejos

La respuesta que sugiere RPM es definitivamente una buena. Usar el administrador de paquetes de tu sistema definitivamente puede hacerte la vida más fácil. Sin embargo, podría significar que también necesita empaquetar un montón de otros módulos Perl.

También puede consultar Shipwright . Esta es una herramienta basada en Perl para empaquetar una aplicación y todas sus dependencias de módulos Perl. Todavía es temprano, pero parece prometedor.

En lo que respecta a la instalación de dependencias, no sería difícil simplemente empaquetar un montón de archivos comprimidos y luego hacer que los Módulo: la solución basada en compilación los instale. Debería echar un vistazo a pip , lo que hace que la instalación de un módulo desde un archivo tar sea bastante trivial. Puede empaquetar esto con su base de código y simplemente llamarlo desde su propio instalador para manejar los deps.

Cuestiono si confiar en CPAN es una buena idea. El shell CPAN siempre obtiene la última versión de una distro, en lugar de una versión específica. Si está interesado en garantizar instalaciones repetibles, no es la herramienta adecuada.

Recomiendo seriamente considerar un sistema de paquetes como RPM para hacer esto. Incluso si está ejecutando en Windows, consideraría que RPM y cygwin realizarán la instalación. Incluso podría configurar un repositorio yum o apt para entregar los paquetes a sistemas remotos.

Si está buscando un instalador general para clientes que ejecutan cualquier cantidad de sistemas operativos y distribuciones, entonces el problema se vuelve mucho más difícil.

Eche un vistazo a PAR .

Jonathan Rockway como una pequeña sección sobre el uso de Catalyst en su libro.

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