Veamos como ejemplo un sencillo programa realizado en Java. Podemos hacer un Jframe, un Desktoppane, un label y un botón una simple aplicación. Luego la compilamos para que cree el paquete jar. A continuación veremos como distribuir nuestra aplicación.
Linux Ubuntu/Debian/Mint y derivados – Paquetes DEB
Para distribuir una aplicación en una distribución Linux basada en Debian es mejor empaquetarla como un .deb, es decir, un paquete Debian.
Es importante mencionar que este empaquetado no instalará recursos externos, como por ejemplo un servidor de base de datos como MySQL, si utiliza base de datos lo mejor es que sea embebida como SQLITE o bien que ya este preparada para conectarse a un servidor donde se encuentre la base de datos.
Veamos la estructura del proyecto de instalación que vamos a utilizar, en Linux los ejecutables sh normalmente se instalan en la carpeta /usr/bin aunque es optativo, luego la aplicación propiamente dicha y sus librerías suelen instalarse en la carpeta /usr/lib y el icono para integrar el menú en /usr/share/carpeta-de-instalacion como se muestra a continuación:
/usr/bin/tutoriales.sh [Script ejecutable sh o run]
/usr/lib/tutoriales/tutoriales.jar [jar de ejecucion java]
/usr/lib/tutoriales/librerias_tutoriales.jar [librerías varias]
/usr/share/doc/tutoriales/icono.gif [icono de la aplicación java]
Abrimos un explorador de archivos y creamos una carpeta de aplicación tutoriales, es importante que sea fácilmente accesible luego desde la terminal, para crear la estructura de instalación. Creamos la siguiente estructura de carpetas:
A continuación dentro de la carpeta DEBIAN, creamos un archivo de texto sin ninguna extensión al que denominaremos control. Este archivo contendrá las especificaciones y descripciones para que Linux muestre la información al usuario de nuestra aplicación:
Veamos el ejemplo de configuración, creamos el archivo y escribimos el contenido siguiente:
Package: Tutoriales
Version: 2,0
Section: Documentation
Priority: optional
Architecture: all
Maintainer: innovesoft <info@innovesoft.net>
Installed-Size: 171
Description: Esta es la descripción del paquete.
Si necesitan más lineas para escribir la descripción deben asegurarse que cada línea comience con un espacio como se ve aqui para que no se interprete como un campo.
.
Las lineas vacias se representan por un punto.
Grabamos el archivo control.
Algunos campos son importantes y requieren parámetros ya estandarizados:
Section: Este campo especifica un área de aplicación en el que el paquete ha sido clasificado. _La lista de secciones estandarizada por Debian se puede ver aquí https://packages.debian.org/jessie/
En este caso tutoriales podría ir en la sección Documentación o Educación.
Priority: Este campo representa que tan importante que es que el usuario instale este software, los parámetros que acepta son required, important,standard,optional y extra.
En este caso lo definimos como optional.
Architecture: es la arquitectura necesaria para ejecutar la aplicación 32 bit, 64 bit o ambas, los parametros son; all, i386 amd64.
A continuación dentro de la carpeta tutoriales/usr/lib/tutoriales/ copiamos todos los archivos compilados finales de nuestra aplicación, en el caso de la aplicación java debemos copiar el jar.
Luego crearemos un archivo dentro de la carpeta tutoriales/usr/bin generamos un archivo de texto llamado tutoriales.sh con el siguiente script bash que apunta al archivo ejecutable
#!/bin/bash java -jar /usr/lib/tutoriales/tutoriales.jarGrabamos como tutoriales.sh Este script bash es un ejecutable en linux que a su vez ejecutara el archivo jar en la carpeta que indicamos. Debemos recordar otorgarle permisos de ejecución mediante la terminal con el comando:
chmod +x tutoriales.shA continuación asignaremos un icono a nuestra aplicación, dentro de la carpeta tutoriales/usr/share/hola-mundo arrojamos el icono que utilizaremos para la aplicación.
Ahora deberemos crear el archivo con las especificaciones para que el instalarse se añada automáticamente un lanzador o acceso directo al menú principal de nuestra distribución Linux.
Dentro de la carpeta tutoriales/usr/share/applications creamos un archivo de texto denominado tutoriales con el siguiente contenido:
[Desktop Entry]
Encoding=UTF-8
Name=Tutoriales
Comment=Tutoriales instructivos de autoaprendizaje
Exec=/usr/bin/tutoriales
Icon=/usr/share/tutoriales.png
Terminal=false
Type=Application
Categories=Education;Documentation;Other
StartupNotify=true
Guardamos el archivo tutoriales sin extensión, después de guardado lo renombramos a tutoriales.desktop.
Los campos para generar una entrada de menú son:
Name: es el nombre de la aplicación que se mostrara en el menú.
Comment: Un comentario que aparecerá junto con el nombre de la aplicación.
Exec: Ruta del archivo ejecutable.
Icon: Ruta del archivo del icono.
Terminal: especifica si en forma visual o se ejecuta mediante terminal.
Categories: especifica que categoría de menú contendrá a la aplicación, en este caso aplicamos tres categorías posibles, educación, documentación y otros. Adoptara la que este disponible.
Las categorías estandarizadas son http://standards.fre...tegory-registry.
Ahora tenemos todos los elementos y la estructura necesaria para construir el paquete DEB. Abrimos una ventana de terminal y vamos a donde tenemos la carpeta principal con todos los archivos que creamos, en este caso nuestra carpeta home y escribimos el siguiente comando para crear el paquete DEB.
dpkg --build tutoriales
El resultado podemos verlo tanto en la terminal como en el explorador de archivos, ahora el archivo deb es un instalador independiente que podemos añadir en los repositorios o compartir con otra personas.
Instalar y desinstalar paquetes DEB usando el comando dpkg
El comando dpkg es el que se usa para manejar paquetes .deb, desde la terminal con dpkg podemos instalar, eliminar y obtener información sobre un paquete .deb.
Generalmente se utilizan en conjunto con la herramienta y comando apt-get. Si una dependencia o requerimiento de la aplicación no se encuentra o tuviese algún problema, dpkg no permitirá que el software se instale y se ayudara con apt-get para mostrarnos una lista de dependencias que deben ser instaladas previamente para poder instalar el software, en nuestro caso necesitamos el Java Runtime. Mediante dpkg instalamos el paquete .deb, pero es importante tener en cuanta dpkg no descargara nada.
Para instalar paquetes con dpkg usamos la opción -i , ejemplo:
dpkg -i tutoriales.debPara desinstalar utilizamos
dpkg -r tutoriales.debTambién con el comando apt-get
apt-get remove tutorialesOtra opción de instalación es a través del la herramienta GDebi, seleccionamos el archivo deb con un clic derecho y seleccionamos la opción Abrir con Instalador de paquetes GDebi.
Gdebi permite instalar paquetes deb que tengamos descargados y buscará, resolverá e instalará sus dependencias, siempre y cuando estén en los repositorios. Esta herramienta funciona igual que apt-get..
A continuación hacemos clic en instalar paquete y se iniciará el proceso de instalación e inclusive podremos ver en forma detallada los pasos y acciones que va haciendo el instalador.
Si no se encuentra ningún problema al finalizar la instalación, podremos ver nuestra aplicación en el menú que tengamos, en este caso utilizamos un Linux Mint con Mate, debería funcionar en la mayoría de los escritorios XFCE, Gnome, Cinnamon, etc
Hasta aquí hemos creado un paquete deb para distribuir nuestras aplicaciones en Linux con Debian y derivados. Para pero estos archivos no sirven para distribuciones como Fedora/Centos ya que usan archivos de instalación rpm.
Convertir archivo DEB a RPM
Podemos convertir archivos DEB a paquete RPM con el comando Alien. Instalamos la herramienta desde la terminal
sudo apt-get install alienLuego escribimos el comando de conversión:
alien -r -c tutoriales.debque nos generara el archivo
Tutoriales-2.0-2.noarch.rpmUna vez que se genero el archivo rpm, los copiamos en Red Hat, Fedora o CentOS.
Para instalarlo utilizaremos el siguiente comando:
rpm -ivh Tutoriales-2.0-2.noarch.rpm
Muy interesante para crear en Linux instaladores, me ha gustado mucho Sergio.