Crear un paquete DEB es una de las cosas mas sencillas que se puede hacer, su proceso de creacion es mucho mas facil que un RPM
Empezar el proyecto
El proyecto empiza con un directorio vacio, el directorio debe contener un directorio obligado. DEBIAN en mayusculas y dentro de este directorio existira un archivo llamado control con la informacion del paquete.
La informacion es la siguiente tomada del paquete NGINX:
Package: nginx
Version: 1.18.0-6.1
Architecture: all
Maintainer: Debian Nginx Maintainers pkg-nginx-maintainers@alioth-lists.debian.net
Installed-Size: 102
Depends: nginx-core (<< 1.18.0-6.1.1~) | nginx-full (<< 1.18.0-6.1.1~) | nginx-light (<< 1.18.0-6.1.1~) | nginx-extras (<< 1.18.0-6.1.1~), nginx-core (>= 1.18.0-6.1) | nginx-full (>= 1.18.0-6.1) | nginx-light (>= 1.18.0-6.1) | nginx-extras (>= 1.18.0-6.1)
Section: httpd
Priority: optional
Homepage: https://nginx.net
Description: small, powerful, scalable web/proxy server
Nginx (“engine X”) is a high-performance web and reverse proxy server
created by Igor Sysoev. It can be used both as a standalone web server
and as a proxy to reduce the load on back-end HTTP or mail servers.
.
This is a dependency package to install either nginx-core (by default),
nginx-full, nginx-light or nginx-extras.
Para un programa como holamundo, seria lo siguiente:
Package: holahundo
Version: 1.0
Architecture: amd64
Maintainer: Last Dragon avisos@lastdragon.net
Installed-Size: 782
Depends:
Section: terminal
Priority: optional
Homepage: https://www.lastdragon.net
Description: Programa estatico de 64 bits compilado sin dependencias
El directorio del proyecto
El directorio del proyecto es una simulacion del sistema de archivos, por lo que fuera del directorio DEBIAN, todos los directorios adicionales hacen referencia a la estructura del sistema de archivos. Si se desea instalar un binario en /bin, habira que crear un dictorio llamado bin y poner adentro del el, los archivos que queremos para nuestro paquete.
Ejemplo de como debe verse el directorio del proyecto:
├── bin
│ └── holamundo
└── DEBIAN
└── control
Generacion del paquete
El programa dpkg el encargado de administrar paquetes tambien tiene la funcion de crear nuevos paquetes.
Ejemplo:
$ dpkg RutaDirectorioProyecto RutaDestinoArchivoDeb
Si se esta posicionado en el directorio proyecto ./ es el mismo directorio y ../ el directorio padre, por lo que el archivo.deb se generaria un nivel arriba del directorio proyecto
$ dpkg -b ./ ../
Resultado final
El archivo sera holamundo_1.0_amd64.deb y puede ser instalado con apt o dpkg
apt install ./holamundo_1.0_amd64.deb
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias… Hecho
Leyendo la información de estado… Hecho
Nota, seleccionando «holamundo» en lugar de «./holamundo_1.0_amd64.deb»
Se instalarán los siguientes paquetes NUEVOS:
holamundo
0 actualizados, 1 nuevos se instalarán, 0 para eliminar y 0 no actualizados.
Se necesita descargar 0 B/518 kB de archivos.
Se utilizarán 801 kB de espacio de disco adicional después de esta operación.
Des:1 /home/lastdragon/holamundo_1.0_amd64.deb holamundo amd64 1.0 [518 kB]
Seleccionando el paquete holamundo previamente no seleccionado.
(Leyendo la base de datos … 162938 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar …/holamundo_1.0_amd64.deb …
Desempaquetando holamundo (1.0) …
Configurando holamundo (1.0) …
Wooooww!!! que genial!!!! esto me va a servir para distribuir configuraciones, instaladores muchas muchas muchas gracias!
### contenido del directorio ####
# tree paquete/
paquete/
├── DEBIAN
│ └── control
└── etc
└── socks-infra.conf
2 directories, 2 files
##### INSTALANDO ###
# sudo dpkg -i confsocks_1.0_amd64.deb
[sudo] password for rcampove:
Selecting previously unselected package confsocks.
(Reading database … 240868 files and directories currently installed.)
Preparing to unpack confsocks_1.0_amd64.deb …
Unpacking confsocks (1.0) …
Setting up confsocks (1.0) …
### archivo de conf en su sitio ###
# ls -l /etc/socks-infra.conf
-rw-rw-r– 1 rcampove rcampove 10503 ene 27 14:55 /etc/socks-infra.conf