2009-10-05 32 views
21

Acabo de terminar de portar una aplicación de Windows a Linux.
Tengo que crear un instalador de la aplicación.
La aplicación es no open source => Debo distribuir los archivos binarios de la aplicación (archivo ejecutable, archivos .so par, archivos de ayuda e imágenes).¿Cuál es la mejor manera de distribuir una aplicación binaria para Linux?

Encontré varios métodos para hacerlo:
- RPM and DEB packages;
- installer in .sh files;
- Autopackage.

No me gusta el primer método (paquetes RPM y DEB) porque no quiero mantener diferentes paquetes para diferentes distribuciones de Linux.

¿Cuál es la mejor forma de para distribuir una aplicación binaria para Linux?

Respuesta

18

Después de haber pasado por esto un par de veces con productos comerciales, creo que la mejor respuesta es usar el instalador nativo para cada plataforma compatible. Cualquier otra cosa produce una experiencia desagradable para el usuario final y, en la práctica, debe probar en todas las plataformas que desea admitir de todos modos, por lo que no es realmente una carga significativa mantener paquetes para cada una. La idea de que puedes crear un archivo binario que pueda "funcionar" en todas las plataformas, incluso algunas de las que nunca has escuchado, simplemente no funciona del todo bien.

Mi recomendación es que elija inicialmente una plataforma o dos para apoyar (Red Hat y Ubuntu serían mis sugerencias) y luego permita que el usuario solicite la creación de paquetes de instalación adicionales. Quizás haga saber que está dispuesto a admitir plataformas adicionales, por una tarifa modesta que cubre su tiempo y esfuerzo en el empaquetado y las pruebas en esa plataforma. Si una plataforma resulta ser muy diferente, es posible que deba cobrar más por el soporte continuo.

Ah, y no puedo dejar de enfatizar el valor de las máquinas virtuales para escenarios como este. Debe crear máquinas virtuales para cada plataforma que admita, y tal vez varias máquinas virtuales por plataforma para que sea más fácil probar diferentes configuraciones.

2

No hay mejor manera (universalmente hablando). tar.gz los binarios, eso debería funcionar.

+1

+1, nada es universal en Linux world – vava

+0

¿Qué pasa con la creación de accesos directos al ejecutable de la aplicación? – Dmitriy

+0

Eso depende también. para que entorno de escritorio? (aunque los chicos de freedesktop.org deberían tener un estándar para eso) –

0

También he estudiado esto en el trabajo y tengo que aceptar que realmente no hay una "mejor manera". Si su aplicación se distribuye como fuente, entonces elegiría los métodos make/configure empaquetados en tar.gz. Eso parece bastante universal en el mundo de Linux.

Una buena forma de hacerte una idea de qué hacer es mirar una organzación más grande y ver cómo distribuyen sus binarios.

3

Hubo muchas buenas respuestas (la mía incluida :)) here. Aunque se trata más de compatibilidad binaria (de la que debe preocuparse).

Para el instalador recomendaría autopackage (hemos lanzado varias versiones de nuestro software con éxito), ya hicieron la parte "installer.sh" y más (integración de escritorio, por ejemplo).

Tiene que tener cuidado y probar los escenarios de actualización y esas cosas, dependiendo de cuán compleja sea la estructura del paquete, pero es bastante ordenada en general. Solucioné algunos errores con el manejo de la dependencia en 1.2.6, por lo que debería estar bien.

0

Es posible instalar un RPM en Debian y un APT en RHEL.

Si vas a vincular estáticamente este programa o vincular dinámicamente solo las bibliotecas que distribuirás en el paquete, entonces no importa mucho cómo lo distribuyas. La forma más simple es tar.gz y eso funcionaría.

OTOH si se vincula dinámicamente con las bibliotecas del sistema, y ​​especialmente si tiene dependencias en bibliotecas dinámicas que se compartirán con las otras aplicaciones del cliente, entonces necesita hacer RPM, APT o ambos.

+0

A .deb, no un "APT" (que significa una herramienta de paquete) –

+0

Ok. La entrada de Wikipedia está segura, entonces. ¿Es "Advanced Packaging Tool" el nombre oficial pero nunca utilizado? http://en.wikipedia.org/wiki/Advanced_Packaging_Tool – DigitalRoss

+0

Mi mal, de hecho es "Advanced Packaging Tool" (debería haber verificado eso). Sin embargo, APT no es ** ** un formato de empaquetado, es un sistema de administración de paquetes para trabajar con los paquetes '.deb' de Debian. –

2

Te cuento una posibilidad adicional, aunque no conozco su estado: el Loki installer. Loki era una compañía que hacía videojuegos para Linux. Cayó en 2002, pero el instalador está disponible.

InstallShield is also available for linux. Sin embargo, no tengo idea del estado.

Aunque muchas personas le proponen ir con alquitrán.gz, por favor no. Supongo que desea proporcionar una experiencia agradable para el procedimiento de instalación a sus usuarios. Una tar.gz es una de las opciones de bajo consumo, baja calidad y baja calidad que puede hacer. Funciona en todas partes porque básicamente no hace nada, como sabes.

Los chicos de freedesktop.org y el LSB tienen bastante claro dónde colocar las cosas. Lo que necesitas es un programa amigable para hacer eso. Autopackage imho tiene los números (me encanta), pero a pesar de su edad, no he visto un solo programa distribuido como autopaquete.

Evalúe con cuidado, pero no omita la posibilidad de ser parte del impulso a favor, simplemente porque no es popular. Si funciona para usted, y funciona para sus usuarios, todo lo demás no importa.

+0

InstallBuilder es una alternativa actualizada a InstallAnywhere http://installbuilder.bitrock.com –

+0

Mi favorito y tan cierto: "Funciona en todas partes porque básicamente no hace nada" – aliopi

2

Es posible que desee probar InstallBuilder. Es crossplatform (se ejecuta en Windows, Linux, Mac OS X, Solaris y casi cualquier otra plataforma Unix). Es utilizado por Intel, Motorola, GitHub, MySQL, Nokia/Trolltech y many other companies, por lo que estará en buena compañía :) Además de los instaladores binarios, también puede crear paquetes RPM y DEB de distribución cruzada.

InstallBuilder es comercial, pero ofrecemos licencias gratuitas para programas de código abierto y descuentos muy importantes para mISVs o solo-developers, solo escríbanos.

2

Crear un archivo Tar.bz2 con el binario, a continuación, publicar un alimento para que, de esta manera:

<?xml version="1.0" ?> 
<interface uri="http://mysite/myprog.xml" 
      xmlns="http://zero-install.sourceforge.net/2004/injector/interface"> 
    <name>MyProgram</name> 
    <summary>what it does</summary> 
    <description>A longer description goes here.</description> 

    <implementation main='bin/myprog' 
        id="sha1new=THEDIGEST" 
        version='1.0'> 
    <archive href='http://mysite/myprogram-1.0.tar.bz2' 
      size='10000'/> 
    </implementation> 
</interface> 

sesión con su clave GPG. Puede usar las herramientas en 0install.net para calcular el resumen y agregar la firma GPG para usted en el formato correcto.

A continuación, colóquelo en su sitio web en la dirección en el uri atributo. Cualquier usuario en la mayoría de las distribuciones de Linux (por ejemplo, Ubuntu, Fedora, Debian, Gentoo, ArchLinux, etc), entonces se puede instalar y ejecutar su programa con:

0launch http://mysite/myprog.xml 

Su sistema también comprobar si hay actualizaciones periódicamente. Hay varias GUI para los diferentes entornos de escritorio, pero la línea de comandos funcionará en todas partes.

También vea algunos de los existing feeds en busca de inspiración.

Cuestiones relacionadas