Re: Como Crear Paquetes De Instalacion De Un Programa
La forma correcta de distribuir aplicaciones en Linux es mediante paquetes (deb, rpm, etc, según la distribución) porque de esa forma el S.O. es capaz de manejar automáticamente las dependencias y mantener limpio el sistema.
El problema, generalmente viene por una mala práctica a la hora de programar y ésta es efectivamente el uso de rutas no estándar, rutas relativas o rutas relativas al ejecutable, lo que acarrea en todos los casos problemas de permisos.
Los ejecutables y librerías están en su sitio adecuado tal y como los instala un sistema de paquetes, pero el programador tiene que conocer su sistema operativo y utilizar rutas apropiadas para los datos que maneja el usuario final, ficheros de configuración, etc. Normalmente se suelen usar directorios específicos dentro de la carpeta de usuario, casi siempre ocultos y que además son estándar y están pensados para estos usos. Por ejemplo:
/home/usuario/.config/miprograma
/home/usuario/.miprograma
gambas tiene una clase que maneja estas rutas independientemente de la máquina en la que se ejecute el programa:
User.Home por ejemplo, devuelve la ruta a la carpeta de usuario. Desktop.Datadir también puede ser útil.
De manera que usando estos directorios para almacenar settings, bases de datos de usuario y en general, ficheros dinámicos que use la aplicación, no debería haber problemas para que funcione correctamente en todos los casos.
Si aún así (y es muy probable que ocurra, debido a las disparidades entre distribuciones Linux) no es posible obtener un ambiente adecuado para la aplicación, se puede recurrir a herramientas externas que encapsulan la aplicación y todas sus dependencias en un -enorme- ejecutable que no siempre funciona en todas las distros. En fin, no existe la perfección y mucho menos en el software libre.
¿La solución definitiva?
Como somos muy 'cool' y siempre estamos a la última, es recomendable dar un vistazo a esta nueva herramienta que permite "encapsular" una aplicación Linux en un contenedor para que funcione en cualquier sitio: Docker
https://www.docker.com/
Mientras que CDE está enfocado a la producción de un ejecutable para uso del usuario final, Docker está más pensado para el uso de los desarrolladores y la obtención sencilla de un entorno de desarrollo de forma rápida. Puede no ser adecuado para distribuir aplicaciones al usuario final, pero es bastante prometedor, además usa la nube para distribuir las aplicaciones '
dockerizadas' (vaya palabro!). No se descarta que en un futuro se puedan correr aplicaciones linux dentro de windows, aunque todavía Mocosoft no ha dejado claro nada al respecto.
Supongo que Docker quiere ganar dinero, como cualquier hijo de vecino, por lo que posiblemente no sea gratis distribuir aplicaciones en su nube. Todavía no lo he probado y todo lo que os he contado lo he leído en la web sin profundizar demasiado.
Saludos