2008-10-31 14 views
8

Tenemos una aplicación de servidor Linux que se compone de una serie de herramientas de código abierto, así como de programas que hemos escrito nosotros mismos. Idealmente, nos gustaría poder instalar esta aplicación en cualquier distribución común de Linux.¿Cuál es el mejor enfoque para escribir un instalador genérico para una aplicación Linux?

En el pasado, hemos escrito scripts Perl para automatizar las instalaciones de esta aplicación. Desafortunadamente, debido a la idiosincrasia de diferentes distribuciones de Linux, la lógica dentro de estos scripts de instalación se vuelve terriblemente compleja y puede cambiar a medida que se lanzan nuevas versiones de cada distribución soportada. ¡Mantener el instalador se convierte así en una de las partes del proyecto que requieren más tiempo!

Estoy buscando asistencia, ya sea un marco, documentación, muestras de código, que pueden hacer que este proceso sea menos doloroso. Estos son los tipos de cosas que nuestro instalador tiene que hacer:

  • Crear usuario/grupo representa

  • Crear árboles de directorios con la propiedad específica y permisos

  • Instalar aplicaciones de código abierto, lo que podría compilar desde la fuente durante la instalación

  • Insertar binarios, scripts, archivos de configuración y documentos precompilados en directorios específicos

  • Registro de tipo init scripts de inicio y cierre

  • generar claves de cifrado

  • verificar la conectividad a un servidor central

Respuesta

9

En lugar del enfoque del instalador, creo que una mejor manera que tener un solo script que lo haga en el momento de la instalación es tener un sistema de compilación que genere archivos .deb o .rpm adecuados para su instalación en cada sistema. .

La manera más pobre de hacerlo es usar checkinstall, que crea paquetes a partir de los archivos instalados mediante 'make install'. Entonces crearía su aplicación en cada sistema y haría que el paquete se creara mágicamente en el formato nativo de la distribución.

1

Probé hace Autopackage unos años, no sé cuán universal es, pero funcionó bastante bien (era la única manera verdaderamente universal en aquel entonces). Seguramente debe proporcionar algunas formas compatibles con LSB para configurar directorios propios, pero este software debería serle útil.

Aunque es probable que haya todavía demasiada diversidad entre las distribuciones de Linux para hacer todo lo de una manera completamente independiente de la plataforma, pero puedo estar equivocado.

2

Creo que la mayoría de las tareas que describe son bastante estandarizadas entre las distribuciones de Linux.En mi experiencia, el siguiente debería funcionar de la familia Debian (incluyendo Ubuntu) y la familia de Red Hat (incluyendo Fedora y CentOS):

  • Crear usuario/cuentas de grupo - adduser comando
  • Crear árboles de directorios - mkdir o install, o simplemente expanda un tarball
  • Instale aplicaciones de fuente abierta: a menos que tenga necesidades particularmente esotéricas, esto probablemente debería dejarse al administrador de paquetes de la distribución.
  • instalar archivos - install, o simplemente expandir un archivo comprimido
  • arranque y apagado de guiones - install a /etc/init.d continuación enlace simbólico a /etc/rc*.d

VMware Server está disponible gratuitamente para Linux y hace la mayor parte de las tareas que usted describe . Utiliza Perl y tal vez shell para su instalación y configuración, por lo que puede ver el enfoque que lleva.

Sin embargo, hablando como un administrador de Linux, I fuertemente prefiero las aplicaciones que se integran con mi sistema de administración de paquetes. En otras palabras, cree archivos .deb y .rpm, como sugirió Vinko Vrsalovic. la construcción de paquetes está extremadamente bien documentados:

1

Usted puede quiero probar BitRock InstallBuilder. Es una herramienta de instalación multiplataforma que le permite hacer exactamente lo que está buscando (agregar usuarios, instalar servicios, instalar binarios precompilados, etc.). Aunque algunas de las otras publicaciones mencionan varias herramientas que puede usar en sus scripts, el problema es que cada distribución de Linux es un poco diferente y tareas simples como agregar un usuario o instalador a un servicio de repente no son triviales cuando necesita hazlos a través de Debian, Ubuntu, Mandriva, RedHat, Gentoo, etc. Un buen instalador multiplataforma debe aislarte de todo eso. Muchos commercial open source companies como MySQL, SugarCRM, Zenoss, Jaspersoft, Groundwork etc. han creado instaladores basados ​​en nuestra tecnología exactamente debido a eso (además de sus archivos de tarots de código fuente normales, etc.) También proporcionamos licencias gratuitas para proyectos de código abierto.

0

Autopackage ahora combinado con el proyecto Listaller. La documentación aún no es exhaustiva pero parece estar funcionando.

Cuestiones relacionadas