Este post se ha realizado sobre una Debian 10 recién instalada. Una debian 10 con el sistema base.
Es importante tener esto en cuenta y si intentas replicarlo prueba a hacerlo sobre una Debian limpia :).
La finalidad es disponer de nuestro propio repositorio de paquetes DEB. Esto nos permitirá poder generar nuestros propios paquetes DEB que se incluirán en nuestra plataforma.
Lo mismo Debian tiene una versión de nginx que tu no deseas o no existe cierto programa empaquetado. Puedes compilar una más nueva o con ciertos parámetros diferentes para que se instale en tus máquinas.
El caso es que no vas a ir máquina a máquina subiendo el paquete DEB. Para ello se monta un repositorio en el que incluirás tus propios paquetes DEB.
Vamos con los comandos que hemos de ir metiendo para montar el tinglado.
Actualizar e instalar dependencias.
# apt update && apt upgrade -y
# apt-get install gnupg rng-tools reprepro vim dpkg-sig nginx -y
Generar una clave GPG para firmar los paquetes
# echo "HRNGDEVICE=/dev/urandom" >> /etc/default/rng-tools
# systemctl enable rng-tools
# systemctl restart rng-tools
# systemctl status rng-tools
# gpg --gen-key
# gpg --list-keys
Anotamos la cadena resultante del comando:
58AD69AAD4170C7B00CFDC7EC7A7820CF0E30319
Montar el repositorio
# mkdir -p /var/packages/debian/conf
# touch /var/packages/debian/conf/distributions
# touch /var/packages/debian/conf/options
En el archivo «distributions» metemos el siguiente contenido:
Origin: lab1.56k.es
Label: lab1.56k.es
Codename: buster
Architectures: amd64
Components: main
Description: Prueba de repositorio APT
SignWith: 58AD69AAD4170C7B00CFDC7EC7A7820CF0E30319
DebOverride: override.testing
DscOverride: override.testing
En el archivo «options» lo siguiente:
verbose
ask-passphrase
basedir /var/packages/debian
Levantar un servidor web con NGINX para que sea accesible vía HTTP
# rm -rf /etc/nginx/sites-available/default
# rm -rf /etc/nginx/sites-enabled/default
# touch /etc/nginx/sites-available/lab1.56k.es
# ln -s /etc/nginx/sites-available/lab1.56k.es /etc/nginx/sites-enabled/lab1.56k.es
# vim /etc/nginx/sites-enabled/lab1.56k.es
server {
listen 80;
server_name lab1.56k.es;
access_log /var/log/nginx/lab1.56k.es-access.log;
error_log /var/log/nginx/lab1.56k.es-error.log;
location / {
root /var/packages;
index index.html;
autoindex on;
}
location ~ /(.*)/conf {
deny all;
}
location ~ /(.*)/db {
deny all;
}
}
# systemctl enable nginx
# systemctl restart nginx
# systemctl status nginx
# gpg --armor --output /var/packages/lab1.56k.es.gpg.key --export 58AD69AAD4170C7B00CFDC7EC7A7820CF0E30319
Crear un paquete DEB de prueba
# mkdir -p /opt/packages/testfanta
# cd /opt/packages/testfanta
# mkdir DEBIAN
# vim DEBIAN/control
Package: testfanta
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: 56k.es
Description: Print 56k.es on the screen
# mkdir -p /opt/packages/testfanta/usr/bin
# echo "echo 56k.es" > /opt/packages/testfanta/usr/bin/testfanta
# chmod +x /opt/packages/testfanta/usr/bin/testfanta
# cd /opt/packages/
# dpkg-deb --build testfanta
# file testfanta.deb
Firmar paquetes e incluirlos en nuestro repositorio
# export GPG_TTY=$(tty)
# dpkg-sig -k 58AD69AAD4170C7B00CFDC7EC7A7820CF0E30319 --sign builder /opt/packages/*.deb
# cd /var/packages/debian/
# reprepro includedeb buster /opt/packages/*.deb
Configurar el repositorio en alguna máquina
# apt install gpg -y
# echo "deb http://lab1.56k.es/debian/ buster main" >> /etc/apt/sources.list
# wget -O - -q http://lab1.56k.es/lab1.56k.es.gpg.key | apt-key add -
# apt update
Y eso es todo amigo. Un saludo cordial.