== Crear un paquete .deb desde cero == '''¿Qué es un paquete .deb? {{{.deb}}} es la extensión del formato de paquetes de software de la distribución de Linux, Debian GNU/Linux y derivadas. El programa predeterminado para manejar estos paquetes es dpkg, generalmente usando apt/aptitude. '''¿Qué es dpkg? dpkg es la base del sistema de gestión de paquetes de Debian GNU/Linux. Se utiliza para instalar, configurar, construir, quitar, y proporcionar información sobre los paquetes {{{.deb}}}. En este ejemplo crearemos un {{{paquete.deb}}} a partir de un {{{script.sh}}} de prueba. Creamos el script.sh {{{ $ touch script.sh }}} Luego llenamos el script con el siguiente contenido: {{{ #!/bin/bash VAL=10 echo $VAL }}} Guardamos, este script imprime el valor de una variable precargada. Podemos probarlo con: {{{ $ bash script.sh }}} Los scripts de ejecución de la mayoría de programas instalados en GNU/Linux Debian se guardan la ruta /usr/bin del sistema, por tanto crearemos un paquete que siga esa regla. Creamos un directorio donde guardaremos todos los ficheros que irán dentro de nuestro paquete. Podemos usar cualquier nombre, luego entramos en el directorio creado. {{{ $ mkdir tmp && cd tmp }}} Dentro de la carpeta {{{tmp}}} creamos otro directorio. {{{ tmp$ mkdir mipaquete }}} Dentro del directorio creado {{{mipaquete}}} crearemos otra carpeta llamada {{{usr}}}. {{{ tmp$ cd mipaquete }}} {{{ tmp/mipaquete$ mkdir usr }}} Luego, dentro de la carpeta {{{usr}}} crearemos otra carpeta llamada {{{bin}}} {{{ tmp/mipaquete$ cd usr }}} {{{ tmp/mipaquete/usr$ mkdir bin }}} Ahora movemos el {{{script.sh}}} a ese directorio {{{tmp/mipaquete/usr/bin}}} {{{ $ cd }}} {{{ $ mv script.sh tmp/mipaquete/usr/bin/ }}} Ahora creamos otro directorio junto a la carpeta {{{mipaquete}}} llamado {{{DEBIAN}}}, que contendra el fichero de paquete de control. Este es un fichero con un determinado formato y que proporciona informacion del contenido del paquete {{{.deb}}} {{{ tmp$ mkdir DEBIAN }}} Dentro de la carpeta {{{DEBIAN}}} Creamos el fichero de control con: {{{ tmp$ cd DEBIAN }}} {{{ tmp/DEBIAN$ touch control }}} Luego, el fichero {{{control}}} lo llenamos con lo siguiente: Descripción de como llenar el fichero control: {{{ Package: NombreDelPaquete (no se permiten espacios o caracteres _) Priority: optional Section: misc Maintainer: NombreDelCreador Architecture: all Version: 1.0 Depends: NombrePaquete1, NombrePaquete2,... (si tiene alguna dependencia) Description: Descripción corta del paquete Y aqui una descripción larga (No eliminar el espacio inicial al comienzo de esta línea) (Por último, se elimina esta linea y se deja una linea vacia) }}} Ejemplo de fichero {{{control}}} para nuestra prueba: {{{ Package: Script Priority: optional Section: misc Maintainer: Argenis Osorio Architecture: all Version: 1.0 Depends: Description: Este script imprime el valor de una variable precargada. Este script imprime el valor de una variable precargada, usa una cabecera que lo distingue como script de bash }}} Guardamos el fichero modificado y cambiamos los permisos del directorio {{{tmp}}}: {{{ $ cd }}} {{{ $ sudo chown -R root.root tmp/ }}} Antes de construir nuestro paquete, nuestro directorio debería tener el siguiente contenido: {{{ tmp/ DEBIAN/ control mipaquete/ usr/ bin/ script.sh }}} Por último creamos el paquete en formato {{{.deb}}}, ejemplo: {{{ $ dpkg -b paquete /ruta/del/paquete/nombre_paquete.deb }}} Creamos el {{{.deb}}} de nuestra prueba {{{ $ dpkg -b tmp /home/debian/mipaquete.deb }}} El comando nos muestra: {{{ dpkg-deb: construyendo el paquete `script' en `/home/debian/mipaquete.deb'. }}} Me generará {{{mipaquete.deb}}} con el script listo para instalar. '''Comandos básicos de dpkg Listar el contenido de nuestro paquete: {{{ $ dpkg -c mipaquete.deb }}} Desempaquetamos el contenido del paquete en una ruta, necesario es crear la ruta donde se va a guardar antes de ejecutar el comando: {{{ $ dpkg -x mipaquete.deb /home/debian/tmp/ }}} Mostrar información sobre el paquete, sobre las dependencias y las versiones de las mismas, con esto veremos el contenido que escribimos en el fichero control: {{{ $ dpkg --info mipaquete.deb }}} Información de nuestro paquete: {{{ Package: Script Priority: optional Section: misc Maintainer: Argenis Osorio Architecture: all Version: 1.0 Depends: Description: Este script imprime el valor de una variable precargada. Este script imprime el valor de una variable precargada, usa una cabecera que lo distingue como script de bash. }}}