Cómo distribuir nuestro software en Ubuntu y otras distros

Si son programadores o no y quieren un método de instalar esa aplicación o script, aquí les dejo varios métodos.
Paquete DEB con Fuentes (Solo para debian y Derivados)

Este método es para cuando tenemos el código fuente de la aplicación.

Primero instalamos el programa que hace la magia “checkinstall”, en una terminal ejecutamos

sudo aptitude install checkinstall

Para el ejemplo usaremos la librería “LAME”, descargan el fuente desde aquí, creamos una carpeta y colocamos el archivo lame-3.98.4.tar.gz y desde terminal como root entramos a dicha carpeta y ejecutamos estas lineas.

tar -xzvf lame-3.98.4.tar.gz
cd lame-3.98.4
./configure
make
checkinstall
cp *.deb ../
cd ..
rm -R lame-3.98.4
chmod 777 lame-3.98.4*.deb

Nos genera el paquete deb, este método instala el paquete generado al finalizar.

Paquete DEB Manual (Solo para debian y Derivados)

Este método es para nuestros scripts o aplicaciones precompiladas

Estructura de un Paquete DEB

|Setup                   (Carpeta General)
|
|-DEBIAN                 (Carpeta donde están los archivos de Configuración)
|--control               (Archivo de configuración)
|--preinst               (Archivo o Script que se ejecuta antes de Instalar)
|--postinst              (Archivo o Script que se ejecuta luego de Instalar)
|--prerm                 (Archivo o Script que se ejecuta antes de desinstalar)
|--postrm                (Archivo o Script que se ejecuta luego de desinstalar)
|
|-usr                    (Carpeta donde están los archivos de tu aplicación)
|-usr/bin                (Carpeta donde están los binarios o scripts)
|-usr/share/pixmaps      (Carpeta donde están los iconos)
|-usr/share/applications (Carpeta donde están los lanzadores)

Ejemplo de archivo “control”

Package: TUPAQUETE
Version: VERSION
Architecture: amd64 (i386 o all)
Maintainer: AUTOR
Section: partner/web
Priority: optional
Description: TEXTO

Generando un Paquete DEB

sudo chmod -R root:root setup/
sudo chmod -R 755 setup/
sudo dpkg -b setup/ paquete.deb
chmod 777 paquete.deb
chown -R setup

Con estos datos ya se puede generar un paquete deb para nuestra aplicación, como ejemplo vamos a hacer un script bash simple

Creamos una carpeta de nombre “ubunlog” y dentro de esta otra de nombre “setup”
luego dentro de la ultima carpeta creamos dos carpetas una de nombre “DEBIAN” y otra “usr”.

Este es el archivo de control

Package: ubunlog-web
Version: 0.11.5.13
Architecture: all
Maintainer: TU NOMBRE
Section: partner/web
Priority: optional
Description: Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu

Lo guardamos dentro de la carpeta “DEBIAN” que creamos antes como “control”

Este código es del archivo postinst

#!/bin/sh
chmod 755 /usr/bin/ubunlog-web
chmod +x /usr/bin/ubunlog-web
chmod 755 /usr/share/pixmaps/ubunlog-web.png
chmod 755 /usr/share/applications/ubunlog-web.desktop
chmod +x /usr/share/applications/ubunlog-web.desktop

Este lo guardamos en la misma carpeta que antes como “postinst”

Ahora creamos las carpetas para el script, el lanzador y el icono, dentro de la carpeta “setup” creamos una carpeta de nombre “usr”

Como ven tenemos dos carpetas una “DEBIAN” y otra “usr” que creamos hace segundos, dentro de esta ultima creamos carpetas una “bin” y otra “share”

Este es el código del script

#!/bin/sh
firefox http://ubunlog.com/ &

lo guardamos en la carpeta “bin” con el nombre “ubunlog-web”.

Ahora vamos a la carpeta “share” en esta creamos una carpeta de nombre “pixmaps” y  guardamos con el nombre “ubunlog-web.png” esta imagen la bajamos de aquí

Solo nos queda crear el lanzador, para esto creamos una ultima carpeta dentro de share de nombre “applications”

Este es el código del mismo

[Desktop Entry]
Encoding=UTF-8
Name=Ubunlog Web Blog
Comment=Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu
GenericName=Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu
Exec=ubunlog-web
Terminal=false
Type=Application
Icon=ubunlog-web
Categories=Application;Network;Internet;
StartupWMClass=ubunlog-web
StartupNotify=true

Lo guardan en la carpeta “applications” como “ubunlog-web.desktop”

Ya tenemos todo listo solo queda generar el paquete deb, le pide contraseña de root, pero no instala nada.

sudo chmod -R root:root setup/
sudo chmod -R 755 setup/
sudo dpkg -b setup/ ubunlog-web_0.11.5.13_all.deb
chmod 777 ubunlog-web_0.11.5.13_all.deb
chown -R setup

Si tiene todo bien ya tiene el paquete “ubunlog-web_0.11.5.13_all.deb”.

Autoextraible Manual (Solo probado en Ubuntu, Funciona en Cualquier Distro)

Este método es para generar archivos con el script makeself (http://megastep.org/makeself/)

Descargan desde la web, es un archivo .run, le dan permisos y lo ejecutamos,

Como se usa.

makeself.sh CARPETA/ORIGEN/ RESULTADO.RUN "TEXTO" ./setup.sh

Como verán “CARPETA/ORIGEN/” son los archivos y carpetas de nuestra aplicación o script “RESULTADO.RUN” es el archivo resultante o archivo Autoextraible
“TEXTO” es el mensaje que se muestra al ejecutar el archivo Autoextraible, y se pone entre comillas.
“./setup.sh” es el script que ejecuta al descomprimir el archivo Autoextraible, no olviden darle permisos.

Para que sea mas entendible usaremos el mismo ejemplo del paquete deb pero adaptado a este.

Creamos una carpeta de nombre “ubunlog” y copiamos la carpeta que genero makeself, renombrenla como “makeself”
En la carpeta “ubunlog” creen otra de nombre setup y dentro de esta colocan los archivos siguientes.

Script Instalador

#!/bin/sh
cp ubunlog-web /usr/bin/
chmod 755 /usr/bin/ubunlog-web
chmod +x /usr/bin/ubunlog-web
cp ubunlog-web.png /usr/share/pixmaps/
chmod 755 /usr/share/pixmaps/ubunlog-web.png
cp ubunlog-web.desktop /usr/share/applications/
chmod 755 /usr/share/applications/ubunlog-web.desktop
chmod +x /usr/share/applications/ubunlog-web.desktop

Lo guardan como setup.sh

Nuestro Script

#!/bin/sh
firefox http://ubunlog.com/ &

Lo guardan como “ubunlog-web” el icono lo guardamos con el nombre “ubunlog-web.png” esta imagen la bajamos de aquí

El Lanzador

[Desktop Entry]
Encoding=UTF-8
Name=Ubunlog Web Blog
Comment=Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu
GenericName=Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu
Exec=ubunlog-web
Terminal=false
Type=Application
Icon=ubunlog-web
Categories=Application;Network;Internet;
StartupWMClass=ubunlog-web
StartupNotify=true

Lo guardan como “ubunlog-web.desktop”

Ahora generamos el archivo Autoextraible

chmod 755 setup/
chmod +x setup/setup.sh
sh ../makeself/makeself.sh setup ubunlog-web.run "Ubunlog - Tutoriales, escritorios linuxeros,software,noticias y todo sobre Ubuntu" ./setup.sh

Ya tenemos el archivo autoextraible.

Espero que les ayude en algo esta

Gracias por sus Comentarios, Si hay algún ERROR es producto de su imaginación, jajajaj


6 comentarios

  1.   David Gómez dijo

    Excelente manual, felicitaciones…

  2.   Usemos Linux dijo

    Excelente artículo Luciano!
    Realmente te felicito.
    Un fuerte abrazo! Pablo.

  3.   maty1206 dijo

    ¡Felicitaciones! Este artículo es uno de los mejores que he visto par aprender a empaquetar binarios .deb para Debian y derivados como Ubuntu.

    En el caso de ArchLinux utilizamos los PKGBUILD al mejor estilo BSD: https://wiki.archlinux.org/index.php/PKGBUILD_%28Espa%C3%B1ol%29

    ¡Un abrazo!

    1.    Luciano Lagassa dijo

      hola, gracias por tu comentario, si te parece podesmos agregar en el post como crear paquetes para arch, aclaro que solo uso ubuntu y un poco de centos, me comentario que es muy buena intente una ves pero no tube el tiempo para instalarla, por lo que estaria muy bueno ya que si yo puedo cualquiera puede.

  4.   Luciano Lagassa dijo

    hola, gracias por sus comentarios, como ya comente en otras oportunidades mis post son basados en mis experiencias, espero que les sean utiles.

  5.   Josh dijo

    Hola, Luciano.

    He empezado a seguir los pasos y no he conseguido pasar del checkinstall. Me devuelve el siguiente error:

    “Makefile:349: recipe for target ‘install-recursive’ failed
    make: *** [install-recursive] Error 1

    **** La instalación falló. Abortando la creación del paquete.”

    Previamente a eso, el comando “make” muestra en el output esto:

    “make[3]: Nothing to be done for ‘all’.”

    No entiendo qué está fallando. He probado a descargar la versión más actual de LAME por ver si solucionaba mi problema, pero nada que ver.

    Saludos.

Escribe un comentario