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.
Respuestas:
Algunos puntos a tener en cuenta al desarrollar,
biblioteca decodificación rígidapkg-config
encontrar los paquetes externos en su lugar.wxWidgets
que pueden representar elementos de la interfaz de usuario nativos dependiendo de dónde se ejecute.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
deb
y fedorarpm
.fuente
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.
fuente
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.
fuente
He encontrado
Linux Standards Base
que es útil, especialmente cuando su aplicación incluye servicios (daemons). Vea algunos de estos sitios:Pero si tuviera que limitarme solo a los recursos, podría ser el Estándar de jerarquía de archivos .
fuente
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.
fuente
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.
fuente