Herramienta para crear y gestionar repositorios de paquetes Debian, compatibles con el formato usado por apt. Permite incluir paquetes .deb, .udeb, .dsc [fuentes], entre otros. Es la solución habitual para montar un repositorio privado o de distribución propia. Este paquete incluye las herramientas auxiliares changestool y rredtool.
Estructura básica del repositorio, las distribuciones que se gestionan y las opciones globales [opcionales].
/srv/repos/myrepo/
conf/
distributions
options
# nano conf/distributions
Origin: Mi Empresa
Label: myrepo
Codename: bookworm
Architectures: amd64 arm64 source
Components: main contrib
Description: Repositorio privado de Mi Empresa
SignWith: ABCDEF1234567890
DiffEnable: yes
# nano conf/options
basedir /srv/repos/myrepo
verbose
ask-passphrase
# reprepro -b /srv/repos/myrepo includedeb bookworm /ruta/mipaquete_1.0_amd64.deb
# reprepro -b /srv/repos/myrepo include bookworm /ruta/mipaquete_1.0_amd64.changes
# reprepro -b /srv/repos/myrepo includedsc bookworm /ruta/a/mipaquete_1.0.dsc
# reprepro -b /srv/repos/myrepo list bookworm
# reprepro -b /srv/repos/myrepo remove bookworm mipaquete
# reprepro -b /srv/repos/myrepo copy bookworm-backports bookworm mipaquete
# reprepro -b /srv/repos/myrepo export bookworm
# reprepro -b /srv/repos/myrepo check
# changestool mipaquete_1.0_amd64.changes show
# changestool mipaquete_1.0_amd64.changes verify
# changestool mipaquete_1.0_amd64.changes updatechecksums
# changestool mipaquete_1.0_amd64.changes addrawfile mipaquete_1.0_all.deb
# changestool mipaquete_1.0_amd64.changes removefile mipaquete-doc_1.0_all.deb
# rredtool patch < fichero.patch > Packages.new
# rredtool diff Packages.viejo Packages.nuevo > Packages.diff
Nota.- reprepro genera automáticamente los parches rred si en conf/distributions se incluye "DiffEnable: yes" y se encarga de que apt update solo descargue los índices incrementales en lugar del fichero completo cada vez.
Ejemplo de flujo de trabajo completo
# dpkg-buildpackage -us -uc
# changestool ../mipaquete_1.0_amd64.changes verify
# changestool ../mipaquete_1.0_amd64.changes updatechecksums
# debsign ../mipaquete_1.0_amd64.changes
# reprepro -b /srv/repos/myrepo include bookworm ../mipaquete_1.0_amd64.changes
# reprepro -b /srv/repos/myrepo list bookworm
publicar el repositorio para apt sirve el directorio /srv/repos/myrepo con nginx o apache, y en los clientes se añade:
# nano /etc/apt/sources.list.d/myrepo.list
deb [signed-by=/etc/apt/keyrings/myrepo.gpg] http://repo.ejemplo.com/myrepo bookworm main
Luego al ejecutar el update el paquete ya está disponible para instalación
# apt update
# apt install mipaquete