Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save nullx5/58b739f8ff96a95ab4f6328dcfd73806 to your computer and use it in GitHub Desktop.
Save nullx5/58b739f8ff96a95ab4f6328dcfd73806 to your computer and use it in GitHub Desktop.

publicar mi propio repositorio de paquetes .deb Github Pages

  • 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

Github Pages

📌 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

Agregar firmas GPG al repositorio

🔹 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment