Ya tenia un tiempo sin actualizar esto, pero en recompensa ahora traigo un tuto sobre la empaquetacion y creación de los .deb
Disfrutenlo, luego voy a poner otra entrada tocando otros temas xD
***********
Ya desde hace días quería preparar este tutorial, pero tenia un problema con unas dependencias en mi debian y no me dejaba instalar algunas de las herramientas necesarias para trabajar, hasta el día de hoy fue que arregle todo.
Comencemos:
¿Que es un paquete .deb?
Cita Wikipedia:
deb es la extensión del formato de paquetes de software de Debian, y el nombre más usado para dichos paquetes. Como Debian, su nombre proviene de Deborah Murdock, esposa del fundador Ian Murdock.
El programa predeterminado para manejar estos paquetes es dpkg, generalmente via el sistema APT.
Los paquetes deb también pueden ser convertidos a otros formatos de paquetes y viceversa usando la aplicación Alien.
¿Como se empaqueta y para qué?
La utilidad de empaquetar es ahorrarle al usuario final el trabajo de compilación e instalación, haciendo todo eso de una manera mucho más eficaz con la única condición de tener instaladas en el sistema las dependencias del binario.
P.e es mucho más practico para un usuario novato correr la siguiente linea:
dpkg -i nombre.deb
Que bajar los archivos fuentes, instalar las herramientas de compilación, depurar errores, cumplir las exigencias del código y mover todo a sus respectivos directorios.
¿Como hacerlo?
Lo primero y obvio es tener las fuentes del programa que deseamos empaquetar.
En mi caso yo he elegido los drivers para mi cámara (gspca) que actualmente solo estan disponibles las fuentes en un .tar.gz
¿Que se necesita?
/* Las siguientes herramientas instalarlas usando aptitude o apt-get */
build-essential
dh-make
devscripts
fakeroot
En caso de que vayamos a crear paquetes oficiales:
patch
diff
patchutils
Una vez que ya tengamos las herramientas instaladas podemos ir a lo bueno.
Como dije antes yo voy a empaquetar el driver de mi cámara, primero descargar las fuentes de nuestra distribución para evitar problemas a la hora de instalar el driver ya empaquetado.
Descarga:
http://mxhaard.free.fr/download.html
Como el tutorial es de debian, obviamente baje las fuentes para mi distribución:
http://ftp.de.debian.org/debian/pool/main/g/gspca/gspca_01.00.20-1.tar.gz
Una vez descargado el fichero, lo descomprimo y se me crea un directorio con este nombre:
gspca-01.00.20
/* Para descomprimir el comando es: tar -xzvf nombre.tar.gz */
Una vez creado el directorio me muevo a el, y ahi dentro corro la siguiente linea:
dh_make -e fclyoko@gmail.com -s
/* la -s viene de single, y el -e es para agregar el mail de manteiner a la documentación */
Una vez corrido el comando tenemos una lista con las especificaciones del paquete, simplemente doy enter para aceptarlas.
Con esto ya tenemos ganado bastante terreno en el proceso de empaquetado, ahora tenemos un nuevo directorio de nombre debian dentro de el hay una serie de ficheros que se encargan de dar las ordenes a la hora de instalarse, también su respectiva documentación (p.e el changelog y copyright), antes de dar el paso final y empaquetar tenemos que comprobar que tenemos las dependencias que requiere el programa ya instaladas en nuestro sistema.
Simplemente abrir el archivo control y comprobar cuales son y si ya estan instaladas.
En este caso son estas:
Depends: debhelper (>= 5.0.37), module-assistant, bzip2
Si ya estan instaladas podemos dar el paso final:
debuild -us -uc
Esto se va a encargar de compilar y construir todas las reglas de instalación del paquete. Si no hay errores en el directorio padre tendríamos que tener un nuevo fichero de nombre:
gspca-source_01.00.20-1_all.deb
Si!, ya esta empaquetado! ahora se puede instalar sin mayores problemas con el comando dpkg -i
/* dpkg -i gspca-source_01.00.20-1_all.deb */
Ahora tenemos un bonito fichero .deb en lugar de las fuentes en tar.gz, podemos distribuirlo como queramos.
// SEGUNDA PARTE
Con lo anterior ya podemos empaquetar, ahora viene algo mejor todavía, crear nuestro propio programa y empaquetarlo también en un .deb
Lo que voy a hacer va a ser algo fácil y con un método que se conoce como Sucio por ser bastante rustico xD.
Lo primero es crear un directorio con este formato
programa-versión
/* Asi lo pide el canon de debian, p.e: lko-1.0 */
una vez creado el directorio lko-1.0 nos movemos ahi y ahi dentro creamos otro directorio de nombre usr nos movemos a el y creamos otro ahi dentro con el nombre bin ahi dentro es donde vamos a colocar el programa
.
lo primero es crearlo en la terminal:
cat > lko.c
Editamos el archivo con cualquier editor y le ponemos las lineas de código del programa.
Como solo es un ejemplo, voy a hacer un script que muestre la url de mi blog al correr el comando lko en la terminal:
el código debe ser asi:
#include <stdio.h>
main() {
printf(“\n\n\t http://www.lyoko.sv.tc \n\n”);
return 0;
}
Lo compilamos asi en caso de que se llame lko.c
gcc lko.c -o lko
Con eso ya se genero un binario de nombre lko y podemos borrar el otro fichero de nombre lko.c
Una vez terminado esto salimos de esos dos directorios
/* cd ../../ */
Y deberíamos estar dentro del primer directorio que creamos (lko-1.0) ahi creamos uno nuevo y de nombre le ponemos DEBIAN nos movemos a el y creamos un archivo de nombre control , este lo llenamos con los siguientes datos:
Package: nombredel paquete
Version: numero de la version
Architecture: tipodearquitectura
Maintainer: el encargado de mantenerlo
Description: una corta descripcion
/* en caso de querer el paquete para todas las arquitecturas poner la palabra all, p.e:
Architecture: all
*/
Una vez creado el archivo control salimos al directorio padre (justo afuera de lko-1.0)
Y solo corremos este comando:
dpkg-deb -b lko-1.0
Si todo sale bien se debe crear un nuevo archivo de nombre lko-1.0.deb
El script esta listo para instalarse:
dpkg -i lko-1.0.deb
Ya instalado lo podemos probar escribiendo en la terminal el comando lko debería salir la url de la pagina con alguna tabulación
Y eso fue todo.. Comentarios, dudas, correcciones son bien recibidas
/* Esto fue para empaquetar, hay otro método que lo que hace es debianizar las fuentes de los programas, osea modificarlas para que sean instalables con el dpkg, si quieren saber sobre este lean la entrada en la wikipedia:
http://es.wikipedia.org/wiki/Deb
Sin embargo esto necesita un poco más de conocimiento ya que seria necesario editar algunos ficheros para su correcta adaptación a debian o similares */
Referencias:
http://www.debian.org/doc/manuals/reference/ch-program.en.html
http://www.elrincondetolito.com/content/view/59/31/
http://www.wikipedia.org
Autor:
Lyoko (fclyoko@gmail.com)
www.lyoko.sv.tc
Notas finales:
La mayoría de tutoriales y tips que escribo siempre van a ser publicadas en mi blog