¿Cuál es la mejor forma de publicar un sólo binario solicitud de varias distribuciones de Linux?

StackOverflow https://stackoverflow.com/questions/1502543

Pregunta

Tengo una aplicación de Linux de código cerrado que quiero distribuir. Esta aplicación está utilizando wxWidgets / GTK lo que hay una enorme lista de bibliotecas compartidas (60+) que esta aplicación depende de.

¿Cuál es la forma preferida para publicar la aplicación y apoyar el número máximo de distribuciones?

  • ¿Es para generar la aplicación para cada distribución soportada y publicar por separado? Esto tiene el inconveniente de ser complicada de construir (a chroot y una acumulación por distro) y sólo funcionará en distribución soportado.

  • ¿Es para añadir todas las bibliotecas compartidas en el instalador y usarlos con la variable LD_LIBRARY_PATH env (como VMware)? Esto tiene el inconveniente de aumentar el tamaño de la instalación.

  • ¿Es para construir una aplicación completamente estática? Esto seguramente no es posible, ya que se romperá algunas licencias.

  • ¿Es una mezcla de esa u otra opción? ¿Cómo los vendedores más comerciales publican su propia gráfica (preferiblemente basado en GTK) aplicación?

¿Fue útil?

Solución

Usted debe echar un vistazo a la Linux Standard Base . Está diseñado específicamente para ayudar a la gente en su posición. Se define un entorno que los desarrolladores de aplicaciones 3 ª parte pueden confiar en - lo que no está establecido versión de libc y otras bibliotecas, y ciertos programas y directorios viven en lugares conocidos. Todo el apoyo principal de distribución de Linux LSB.

Dicho esto, usted debe probablemente todavía empaquetar el resultado específicamente para cada distribución importante -. Sólo para que sus clientes pueden gestionar su aplicación con sus herramientas habituales de gestión de paquetes

Otros consejos

Básicamente, hay dos maneras. Se puede elegir tanto, si lo desea.

La primera forma es la forma en juegos comunes, y tales hacerlo. Hacer un subdirectorio lib /, LD_LIBARY_PATH uso e incluyen casi todas las bibliotecas compartidas que necesita. Esto asegura una experiencia sin dolor de su usuario, pero hace que el instalador más grande y probablemente la huella de memoria más grande también. Incluso no intente volver a utilizar las bibliotecas preexistentes, ya que tenderían a desaparecer a medida que las actualizaciones se realizan en el sistema.

La segunda manera es proporcionar paquetes de distribución. Estos por lo general no son tan difíciles de hacer, y luego se integrará de forma adecuada con las distribuciones, y tendrán, además, parecen mucho más acogedor para sus clientes. Las desventajas son 2: Tendrá que hacer esto para cada distribución (Debian, Ubuntu, SuSE, RedHat es probablemente un buen comienzo), y se necesita para mantener ellos: el paso del tiempo, algunas bibliotecas ya no estarán disponibles en una versión específica, y por lo tanto el usuario obtendrá problemas de dependencia.

En su instalador, compruebe que las bibliotecas están instalados y luego descargar los binarios para aquellos que no lo son.

Para mayor comodidad de los usuarios, si no hay conexión a Internet, tienen el instalador generar una clave que puede introducir en su página web para recibir un archivo ZIP que luego se puede alimentar al instalador.

Para obtener el máximo confort, comprobar que las bibliotecas están disponibles en la distribución de destino y pedir al usuario que utilice la herramienta de administración estándar para instalarlos. De esa manera, no se va a contaminar el equipo con diferentes versiones de la misma biblioteca.

Eso dijo: Podría ser más inteligente para poner su código valiosa en una librería de enlace y luego prever que, en blob binario en un paquete fuente. De esta manera, su código es tan protegida como lo sería en un binario puro y los usuarios pueden compilar el código de unión en su sistema favorito sin tener que preocuparse por esas cosas.

Es decir: ¿Cuánto vale la pena es la parte del código que establece la interfaz de usuario? ¿Cuánto se pierde cuando alguien roba eso?

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