- Si quieres facilidad para los usuarios: PPA en Launchpad
- Si quieres algo oficial y serio: Repositorio APT propio | Nginx, Apache, Github Pages
- Si solo quieres compartirlo rápido: GitHub/GitLab Releases | solo sube el .deb y listo
reprepro - Aptly
📌 1️⃣ Crear un repositorio en GitHub
Ve a GitHub y crea un nuevo repositorio, por ejemplo: mi-repo-deb
Activar GitHub Pages
- Ve a Settings > Pages en GitHub.
- En Branch, selecciona main y la carpeta / (root).
- Guarda los cambios.
- GitHub Pages activará el sitio en:
https://TU_USUARIO.github.io/mi-repo-deb/
Clona el repositorio en tu máquina:
git clone https://github.com/TU_USUARIO/mi-repo-deb.git
cd mi-repo-deb
📌 2️⃣ Crear la estructura del repositorio APT
En el repositorio, debes crear la estructura típica de un repositorio APT:
mkdir -p debian/pool/main
mkdir -p debian/dists/stable/main/binary-amd64
pool/main/
→ Donde estarán los paquetes .deb
dists/stable/main/binary-*
→ Archivos de índices para APT
📌 3️⃣ Copiar el paquete .deb al repositorio
Ubica tu paquete .deb y muévelo a pool/main/
cp ~/ruta/a/mi-paquete.deb debian/pool/main/
📌 4️⃣ Generar los archivos Packages.gz y Release
Estos archivos son necesarios para que APT pueda reconocer el repositorio.
🔹 Generar Packages.gz
cd debian
dpkg-scanpackages --arch amd64 pool/main/ | gzip -9 > dists/stable/main/binary-amd64/Packages.gz
cd ..
🔹 Crear Release
apt-ftparchive release debian/dists/stable/ > debian/dists/stable/Release
nvim debian/dists/stable/Release
Origin: bl3ssedc0de
Label: bl3ssedc0de
Suite: stable
Version: 1.0
Codename: stable
Architectures: amd64
Components: main
Description: Repositorio APT en GitHub Pages
Date: Mon, 03 Mar 2025 12:00:00 UTC
🔹 Sube la llave publica gpg, mi-repo.gpg a tu repositorio GitHub Pages en https://TU_USUARIO.github.io/mi-repo-deb/mi-repo.gpg
gpg --dearmor -o mi-clave.gpg mi-clave.asc
🔹 Para firmar el paquete .deb, usa dpkg-sig:
dpkg-sig --sign builder -k TU_ID_GPG mi-paquete.deb
Esto agregará una firma GPG dentro del .deb.
🔹 Firmar el índice del repositorio APT
APT necesita una firma en el archivo Release.
📌 Generar la firma:
cd debian
gpg --default-key TU_ID_GPG --armor --detach-sign -o dists/stable/Release.gpg dists/stable/Release
gpg --default-key TU_ID_GPG --armor --clearsign -o dists/stable/InRelease dists/stable/Release
cd ..
Esto generará:
Release.gpg
→ Firma separada para Release
InRelease
→ Firma embebida
📌 5️⃣ Subir el repositorio a GitHub
Añade los archivos y súbelos a tu repositorio:
git add .
git commit -m "Primer commit - Repositorio APT"
git push origin main
Ahora los usuarios deben agregar tu clave pública y configurar el repo:
1️⃣ Descargar la clave GPG
wget -O /usr/share/keyrings/mi-repo-keyring.gpg https://TU_USUARIO.github.io/mi-repo-deb/mi-repo.gpg
wget -O /etc/apt/trusted.gpg.d/public.gpg https://nullx5.github.io/mi-repo-apt//public.gpg
2️⃣ Agregar el repositorio a APT
echo "deb [signed-by=/usr/share/keyrings/mi-repo-keyring.gpg] https://TU_USUARIO.github.io/mi-repo-deb stable main" | sudo tee /etc/apt/sources.list.d/mi-repo.list
echo "deb [signed-by=/etc/apt/trusted.gpg.d/public.gpg] https://nullx5.github.io/mi-repo-apt/debian stable main" | sudo tee /etc/apt/sources.list.d/mi-repo-apt.list
3️⃣ Actualizar e instalar paquetes
sudo apt update
sudo apt install mi-paquete