2012-03-05 5 views
11

que desarrollar y mantener un conjunto de aplicaciones de bioinformática de más de 50 secuencias de comandos y su proceso de implementación es un desastre:¿Cómo debo mejorar mi proceso de implementación de la aplicación Perl?

  • conjunto entero está en un repositorio git grande. Tiene muchas dependencias de CPAN y docenas de módulos internos también.
  • La plataforma de desarrollo es Linux.
  • Las plataformas de implementación son Windows (más de 20 usuarios), Mac (10+), Linux (2-3). La mayoría no son "usuarios avanzados".
  • Para Windows, tengo un instalador (hecho con NSIS) para módulos de fresa perl + required (es decir, instalé fresa en una caja de Windows, instalé todos los módulos y comprimí c: \ strawberry), y otro instalador para el suite- - Hice esto b/c la suite se actualiza mucho más que la lista de módulos requeridos.
  • Para Mac, incluyo Perl 5.14, todos los módulos de cpan necesarios, y el conjunto de aplicaciones en un instalador de doble clic. No uso el sistema perl b/c, tiende a estar desactualizado. Agrupe todo junto a diferencia de Windows b/c Me chupo en mac.
  • Para Linux, manejo sus instalaciones de forma manual ya que solo hay unas pocas y ellas usan diferentes distros.

Esto obviamente es un desastre que creció orgánicamente en varias generaciones de desarrolladores. Idealmente, me gustaría crear distribuciones instaladas en cpan fuera de las bibliotecas internas y varios grupos de scripts relacionados, y usar dependencias de módulos para permitir que cpan los instale.

Pero no estoy seguro de cuál es el mejor enfoque para esto, b/c Todavía necesitaría distribuir Perl, tendría que escribir algún tipo de interfaz sin línea de comando para CPAN, controlar las versiones exactas de los módulos CPAN de terceros, apúntelo de manera predeterminada a mi "DarkPan" donde almacenaría nuestros módulos, cómo insertaría actualizaciones, etc. etc.

No creo que pueda usar PerlApp o Par desde afaik aquellos son para agrupar scripts individuales, no un conjunto completo de ellos.

Cualquier consejo muy apreciado.

Respuesta

2

Además de las 3 plataformas mencionadas (más, si se cuentan las variantes de Linux), que realmente tienen un par de problemas diferentes:

  1. despliegue de una norma conocida buena Perl bibliotecas ejecutables y (módulos CPAN).
  2. Despliegue de sus scripts y módulos Perl.

Érase una vez, admití una instalación grande de Solaris Perl. Intenté por un tiempo para levantar una instalación de Linux Perl "lado a lado", reutilizando los mismos módulos de CPAN. No funcionó El gran problema para mí es que una gran cantidad de módulos de Perl requieren compilación, lo que significa que se dirigen a una plataforma específica. Terminé solo con 2 instalaciones, y siempre recordé instalar un nuevo módulo de CPAN en ambas áreas.

Ahora somos 100% Windows, así que no tengo el mismo problema. Sin embargo, ejecutamos Perl en una unidad de red compartida. Todos los usuarios asignan esta unidad y ejecutan una secuencia de comandos del Registro que asocia archivos .PL con la instalación de Perl en la red. (Consulte mi respuesta al this other Perl question.)

Por lo tanto, además de la unidad asignada y el script del Registro, los usuarios no necesitan instalar nada. Incluso los módulos de CPAN se recogen de la red. Esto resuelve el elemento n. ° 1 (solo para usuarios de Windows).

Lo mismo ocurre con el elemento n.º 2: los scripts se almacenan en una unidad de red (la misma) y los usuarios ejecutan otra secuencia de comandos del Registro para incluir la carpeta de scripts en su búsqueda PATH. Editamos nuestros scripts en un área y tenemos un "Check-In 'n Release" ("CINR") que usamos para, bueno, registrar y liberar scripts en el área que los usuarios señalan. Los usuarios pueden hacer doble clic en los scripts en el Explorador, ejecutarlos en DOS o, aún mejor, incluirlos en el menú contextual en el Explorador, etc. (En realidad, utilizamos una aplicación .NET para mapear el disco y hacer todos estos ajustes para el usuario, pero se puede hacer mucho más simple.)


Así que, ¿cómo esta ayuda con las otras plataformas, Linux y Mac? Como me encontré con mi experimento de Solaris/Linux, creo que está atrapado con diferentes instalaciones de Perl para las 3 plataformas, aunque debería poder llegar a la misma unidad de red para sus scripts y módulos de Perl.

La instalación de Perl incluso podría estar bien en una unidad de red para los usuarios de Linux. Probablemente sea más fácil para ellos que los usuarios de Windows. Los usuarios de Mac son duros. Administro una red Mac doméstica, y creo que las unidades de red son muy difíciles de hacer en Mac OS X en comparación con otros sistemas operativos. Debería ser tan fácil como en Linux ya que tanto es lo mismo, pero hay problemas muy extraños (para mí) mapeo de unidades NFS y SMB. Las unidades AFP son un poco más fáciles para que el usuario pueda mapear manualmente, pero no tan fácil de mapear programáticamente.

La recomendación de mi Mac es intentar usar Platypus. Definitivamente es excelente para agrupar scripts en una aplicación de doble clic, aunque las opciones de tu interfaz están limitadas solo a la salida (no se permiten entradas de usuario durante la ejecución). No estoy seguro si podría poner toda una instalación de Perl en la aplicación Platypus o no, pero si pudiera encontrar las rutas, podría hacerlo.

¡Buena suerte!

+0

Lo siento, debería haber sido más claro ... muchos de los 'usuarios' de mis scripts están en una organización diferente y no tengo control directo sobre las computadoras (aunque la mitad también están en el mismo edificio que yo). El ornitorrinco parece prometedor, sin embargo. EDITAR: pensándolo bien, incluso para la mitad de los usuarios, si no tuviera que preocuparme por los problemas de instalación específicos de la máquina, bien podría valer la pena ... – user1481

+0

Es de suponer que sus usuarios están interesados ​​en ejecutar sus scripts. En otras palabras, QUIEREN, no se ven obligados a hacer algo que prefieren omitir. Para mis 200 usuarios en todo el mundo, QUIEREN ejecutarlos, por lo que están dispuestos a ejecutar los scripts de configuración para mapear la unidad necesaria, asociar los archivos .PL, etc. Si esto no es algo que estas personas necesitan o desean correr, hacer que pasen por esta configuración adicional ¡puede ser aún más difícil! Sin embargo, algunos scripts de configuración y una instalación en red de Perl, módulos de CPAN y sus scripts y módulos personalizados son un buen comienzo. – jimtut

0

Es posible que desee comprobar paquete de CAVA. Puede tratar con múltiples scripts en un solo paquete.

Cuestiones relacionadas