¿Qué debo tener en cuenta si quiero escribir una aplicación que se ejecute en cualquier distribución de Linux?

15

Estoy planeando escribir una aplicación que me gustaría poder ejecutar en cualquier instalación de Linux sin tener que volver a escribir el código al hacerlo (excepto tal vez la interfaz, GNOME vs KDE, etc.).

No tengo mucha experiencia en las minucias de las diferencias entre las distribuciones, y tampoco puedo proporcionar detalles sobre el proyecto, ya que solo acaba de entrar en la etapa de planificación, aparte de que va a estar hurgando en el interior del núcleo para interactuar. con la mayor cantidad de hardware posible de la computadora.


fuente
código abierto o propietario? compilado o interpretado?
xenoterracide
código abierto y compilado.
así entonces usted no tiene que preocuparse de escribir una pequeña aplicación / archivo MAKE o algo así, que vuelve a vincular su programa, como Oracle no
xenoterracide

Respuestas:

10

Algunos puntos a tener en cuenta al desarrollar,

  1. Use un sistema de construcción estándar
  2. Evite las rutas de la biblioteca de codificación rígida
  3. use herramientas como pkg-configencontrar los paquetes externos en su lugar.
  4. Si su aplicación tiene una GUI, use algunos marcos como los wxWidgetsque pueden representar elementos de la interfaz de usuario nativos dependiendo de dónde se ejecute.
  5. Evite crear dependencias con paquetes que no se ejecutarán en otras distribuciones.

La única forma de asegurarse de que su aplicación funcione en todas las distribuciones es ejecutarla y probarla. Una forma de hacerlo es creando máquinas virtuales para cada distribución. VirtualBox se puede usar para hacer esto. Tengo alrededor de 8 máquinas virtuales en mi caja para este tipo de pruebas.

Creo que no se puede generalizar demasiado en la implementación de la aplicación, ya que cada distribución utiliza una forma diferente de instalar paquetes. Debian usa deby fedora rpm.

Navaneeth KN
fuente
3
simplemente evite las rutas de codificación difíciles, la mayor diferencia entre TODAS las distribuciones es su administrador de paquetes y dónde colocan las cosas. Suponga que colocarán cada archivo y directorio en un lugar diferente al suyo.
xenoterracide
2

Solo mi 2c, pero he tenido menos dolores de cabeza con las aplicaciones que vienen con paquetes en los repositorios oficiales o que se compilan desde la fuente. Las aplicaciones que se distribuyen como archivos binarios de terceros tienden a sufrir algunos problemas de dependencia. Por lo general, necesitaré rastrearlos y resolverlos manualmente.

Entonces, si tuviera que lanzar una aplicación de Linux, trabajaría para empaquetarla y llevarla a los repositorios oficiales. De lo contrario, lo distribuiría en forma de fuente y haría que el usuario lo compilara para su sistema.

sybreon
fuente
2

Si está escribiendo para Linux no incrustado, lo principal a tener en cuenta es que las diferentes distribuciones tendrán una colección diferente de versiones de biblioteca. Por lo tanto, debe establecer una línea de base suficientemente antigua. A medida que Debian se actualiza lentamente, Debian estable (o estable anterior cuando existe, en los pocos meses posteriores a un lanzamiento) tiende a ser una opción razonable.

Deberá empaquetar por separado para cada distribución. Si su aplicación es de código abierto y tiene éxito, puede contar con que alguien la recoja y contribuya con el paquete, por lo que no es una habilidad esencial. Además del empaque, las diferencias entre las distribuciones afectan principalmente a la administración del sistema, no al desarrollo o uso diario.

Si va a parchear el kernel, tendrá que probar con más distribuciones ya que cada distribución tiene sus propios parches que podrían causar incompatibilidades y cada distribución tiene configuraciones de usuario que pueden depender de diferentes conjuntos de interfaces de kernel disponibles (por ejemplo, requisitos para que algunas cosas no sean módulos).

Tenga en cuenta que lo que escribí anteriormente no es cierto si desea que su aplicación funcione en sistemas embebidos (en este caso, cualquier cosa que no sea un servidor, una computadora de escritorio o una computadora portátil), que incluso cuando ejecutan un kernel de Linux a menudo no tienen las bibliotecas habituales, comenzando con Glibc evitado a favor de µClibc , dietlibc , Bionic , etc.

Gilles 'SO- deja de ser malvado'
fuente
0

Distros difiere principalmente en el empaquetado y las configuraciones / valores predeterminados de la aplicación. Cada código que se ejecuta en una arquitectura determinada debe ejecutarse en cada distribución para esa arquitectura. También puede ejecutar fácilmente aplicaciones de GNOME en KDE y viceversa, por lo que puede elegir la que mejor se adapte a usted / su base de usuarios y listo.

Señor shunz
fuente
0

Lo principal es elegir un idioma. ¿En qué idioma se ejecutará esto? Si realmente quieres ejecutar cualquier distribución de Linux, puedes escribirla en Python. Cualquier aplicación de Python que se ejecute en Linux se ejecutará (básicamente) en cualquier distribución de Linux con 0 modificaciones.

Python también tiene muy buenas carpetas GTK y Qt. Nunca he trabajado con gtk, pero es realmente genial trabajar con PyQt.

Los beneficios de Python es que probablemente no necesite compilar ninguna extensión (aunque depende totalmente de lo que esté escribiendo. Incluso si lo necesita, es bastante fácil) y también tiene una excelente fuente de distribución a través de pypi . Instalar programas python desde allí suele ser incluso más fácil que el repositorio de paquetes de distribución.

Falmarri
fuente