Cómo crear un paquete deb

+1
+4
-1

Cómo crear un paquete deb para nuestra aplicación

1.- Queremos hacer un paquete deb para instalar nuestra aplicación y la instalaremos en la carpeta /usr

1.1- En /usr hay dos carpetas que necesitaremos, /usr/bin y /usr/share, en la primera colocaremos nuestro ejecutable directamente y en la segunda, en varias de sus subcarpetas, llamadas /usr/share/applications, /usr/share/doc y /usr/share/menu, colocaremos una serie de archivos de nuestro programa. Aparte crearemos una carpeta en /usr/share llamada como nuestra aplicación,
/usr/share/gursync, la cual, en nuestro caso, sólo contendrá otra carpeta con los iconos del programa. Vayamos a una explicación somera de todas estas carpetas:

1.1.1- En /usr/share/applications se guardan las entradas de cada aplicación gnome, en archivos de texto y con el siguiente formato en el nombre del archivo: nombrePrograma.desktop. El contenido es similar a éste:

[Desktop Entry]
Version=0.1
Name=gursync
GenericName=Gursync
Comment=Sincronizador de carpetas
Exec=gursync
Terminal=false
Type=Application
Categories=GNOME;GTK;Utility;
Icon=briefcase.png
StartupNotify=true
OnlyShowIn=GNOME;

1.1.2- En /usr/share/doc/ hay subcarpetas con el nombre de cada programa y en el interior de cada una de ellas se guardan archivos con información de ese programa. Archivos tales como: AUTHORS, COPYNG, README y otros

1.1.3- En /usr/share/menu/ se guardan las entradas del menú de gnome, cada entrada está en un archivo de texto el cual tiene el mismo nombre que la aplicación. El contenido es similar a éste:

?package(gursync):needs="X11" section="Applications/utils"\
title="Gursync" command="/usr/share/gursync/bin/gursync"\
description="Programa para sincronizar carpetas"
icon="/usr/share/gursyc/icons/briefcase.png"

1.1.4- En la carpeta creada por nosotros en /usr/share/ con el mismo nombre que nuestra aplicación, crearemos otra subcarpeta llamada iconos y que contendrá eso, los iconos del programa: /usr/share/nombre_programa/iconos

2. Llegados a este punto, y para crear nuestro paquete deb, debemos de simular todas éstas carpetas en nuestro directorio personal, esto es, crear una carpeta llamada usr con su misma estructura. Así que creamos una carpeta para el empaquetamiento llamada por ejemplo deb y en ella creamos usr y todas las carpetas mencionadas anteriormente, pero además debemos de crear junto a la carpeta usr otra carpeta llamada DEBIAN, así, en mayúsculas. En ésta carpeta crearemos tres archivos que sólo se utilizarán para la instalación/desinstalación del programa en un sistema linux. Estos archivos son: control, postinst y postrm.

El contenido de los mismos es similar a estos:

Archivo control:
Package: gursync
Priority: optional
Section: utils
Maintainer: ubaloie@gmail.com
Architecture: i386
Version: 0.1
Depends: gtk2
Provides: gursync
Conflicts:
Replaces:
Description: Programa para sincronizar carpetas

Archivo postinst:
#!/bin/sh
set -e
if [ "$1" = "configure" ] && [ -x /usr/bin/update-menus ]; then update-menus ; fi

Archivo postrm:
#!/bin/sh
set -e
if [ "$1" = "configure" ] && [ -x /usr/bin/update-menus ]; then update-menus ; fi

El primer archivo especifica las características del paquete y los otros dos son para actualizar el menú de gnome al instalar/desinstalar la aplicación.

3.- Una vez creado un espejo de la carpeta /usr y creado también la carpeta DEBIAN en la carpeta de empaquetamiento llamada deb, sólo nos queda poner en su ruta los siguientes archivos: En la carpeta applications instalamos el archivo nombre_programa.desktop, con el contenido explicado más arriba. En la carpeta doc se crea una nueva carpeta con el nombre del programa y se incluye en ella los archivos de documentación del mismo, como README y demás. En la carpeta menú se crea un archivo de texto con el contenido explicado anteriormente. Y en la carpeta con el nombre del programa que cuelga de usr/share se crea otra carpeta llamada icons con los archivos de imagen del programa: /usr/share/nombre_programa/icons. En esta carpeta del programa podemos crear más carpetas como html y demás.

La carpeta deb quedaría así, los verdes son carpetas y los amarillos archivos y donde gursync sería el nombre de nuestra aplicación:

deb:
deb/DEBIAN:
control postinst postrm
deb/usr:
deb/usr/bin:
gursync
deb/usr/share:
deb/usr/share/applications:
gursync.desktop
deb/usr/share/doc:
deb/usr/share/doc/gursync:
AUTHORS COPYING README
deb/usr/share/gursync:
deb/usr/share/gursync/iconos:
briefcase.png database_go.png database_refresh.png
database_save.png door_out.png house.png
deb/usr/share/menu:
gursync

4.- Ahora llegamos al punto final, nos situamos por encima de la carpeta deb y cambiamos el propietario de la carpeta:

sudo chown -R root.root ./deb

Y creamos el paquete con formato deb en nuestro directorio personal:

dpkg -b ./deb /home/ubaloie/gursync.deb

Nota: Manualmente, para crear el programa e instalarlo, se utilizan los comandos: make y make install y para probar la instalación se puede cambiar el DESTDIR en el archivo Makefile para que apunte a /home/ubaloie/deb y el cual ha de tener la estructura de /usr/ con las carpetas bin y share que cuelguen de él, aparte de otras que necesitemos y en las cuales vayamos a instalar cosas de nuestro programa, y así sabríamos si todo funciona como es debido.

Crear un paquete deb para nuestra aplicación by Ubaloie, Juanra Goti is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Comentarios

Imagen de furtaxi

No es que me dedique a ello, pero siempre viene bien saber que hay un hilo que lo explica.

Por cierto, edita el título del post, y le añades " (Como)", para que la gente sepa que se trata de una solución, y no de una pregunta.

Mi web : www.vigovideo.es
Buscar es más rápido que esperar una respuesta.

Imagen de ubaloie

Gracias a ti por la sugerencia, muy buena, ya está corregida.

Imagen de r0man

Muchas gracias, estuvo excelente. :)

Imagen de giardino_89

Hola antes que nada quiero agradecerte por el tutorial lo he llevado a la practica y me ha resultado, aunque al momento de crear el .deb desde consola me solia salir un error de los archivos que se encuentran en la carpeta "DEBIAN", el error era de permisos erroneos a estos archivos.
Y lo solucione de la siguiente manera:

ASIGNARLE PERMISOS A CONTROL,POSTINST Y POSTRM
Abrir una terminal y poner el siguiente comando para cada uno de los tres archivos
sudo chmod 0755 control

Todo bien hasta aqui me crea el deb sin ningun problema pero mi problema es que al instalar el paquete no me crea los accesos en el menu, no aparecen. tengo Ubuntu 11.10 y para mi es muy importante tener estos accesos y mi codigo es el siguiente.

?package(jaime):needs="X11" section="Applications/Data Management"\
title="Empresa" command="/usr/bin/Empresa.jar"\
description="Gestor de bases de datos"
icon="/usr/share/Jaime/iconos/icono.png"

Nota: Al ejecutar mi programa desde la terminal se ejecuta con exito al igual que ejecutarlo al hacer ALT F2

Imagen de giardino_89

Hola ya resolvi el problema.
Resulta que instale el paquete en Ubuntu 10.04 y como tiene la interfas de gnome clasico si aparecia mi programa en Aplicaciones Accesorios por lo que me di cuenta de que el problema era la interfaz "Unity" esto al usar Ubuntu 11.10 pero bueno el problema lo solucione de la siguiente manera:
Solo modifique el archivo .desktop que se guarda en la carpeta Applications y el archivo de la carpeta menu aqui esta el codigo

[Desktop Entry]
Version=0.1
Name=Jaime
GenericName=Gestor
Comment=Sincronizador de carpetas
Exec=/usr/bin/Empresa.jar
Terminal=false
Type=Application
Categories=GNOME;GTK;Utility;
Icon=/usr/share/Jaime/iconos/icono.png
StartupNotify=true
OnlyShowIn=GNOME;Unity;

a esta linea de codigo fue la que modifique
OnlyShowIn=GNOME;
y solo le agregue Unity;

Al archivo de la carpeta menu el codigo antes de ser modificado era asi:

?package(jaime):needs="X11" section="Applications/Data Management"\
title="Empresa" command="/usr/bin/Empresa.jar"\
description="Gestor de bases de datos"
icon="/usr/share/Jaime/iconos/icono.png"

Despues lo modifique asi:

?package(jaime):needs="X11" section="Applications/Accesories"\
title="Empresa" command="/usr/bin/Empresa.jar"\
description="Gestor de bases de datos"
icon="/usr/share/Jaime/iconos/icono.png"

bueno esto fue lo que modifique section="Applications/Accesories"\
Espero que a mas gente le sirva si es que ya tienen Ubuntu con Unity y gracias por el tuto me sirvio bastante.