Product SiteDocumentation Site

15.3. Creación de un repositorio de paquetes para APT

Falcot Corp gradually started maintaining a number of Debian packages, either locally modified from existing packages or created from scratch to distribute internal data and programs.
Para facilitar su despliegue, desean integrarlos en un repositorio de paquetes que APT pueda utilizar directamente. Por razones de mantenimiento obvias, desean separar los paquetes internos de aquellos recompilados localmente. El objetivo es que los elementos correspondientes del archivo /etc/apt/sources.list.d/falcot.list sean los siguientes:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
Por lo tanto, los administradores configuraron un servidor virtual en su servidor HTTP interno, con /srv/vhosts/packages/ como raíz del espacio web asociado. Delegaron la gestión del repositorio en sí al programa mini-dinstall (en el paquete del mismo nombre). Esta herramienta revisa el directorio incoming/ (en nuestro caso: /srv/vhosts/packages/mini-dinstall/incoming) y espera allí a los nuevos paquetes; cuando se sube un paquete, lo instala en un repositorio en /srv/hosts/packages/. El programa mini-dinstall lee el archivo *.changes creado cuando se genera el paquete Debian. Estos archivos contienen una lista de todos los otros archivos asociados con la versión del paquete (*.deb, *.dsc, *.diff.gz/*.debian.tar.gz, *.orig.tar.gz o sus equivalentes con otras herramientas de compresión) que le permiten a mini-dinstall saber qué archivos instalar. Los archivos *.changes también contienen el nombre de la distribución objetivo (generalmente unstable) mencionada en el último campo de la entrada en debian/changelog y mini-dinstall utiliza esta información para decidir dónde instalar el paquete. Es por esto que los administradores siempre deben cambiar este campo antes de compilar un paquete y definirlo como internal o updates, dependiendo de la ubicación objetivo. mini-dinstall generará luego los archivos necesarios para APT, como Packages.gz.
La configuración de mini-dinstall necesita definir un archivo ~/.mini-dinstall.conf; en el caso de Falcot Corp, su contenido es el siguiente:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages

verify_sigs = 0
mail_to = admin@falcot.com

generate_release = 1
release_origin = Falcot Corp
release_codename = stable

[updates]
release_label = Paquetes Debian Recompilados

[internal]
release_label = Paquetes Internos
Una decisión importante es la generación de archivos Release para cada repositorio. Esto puede ayudar a gestionar las prioridades de instalación utilizando el archivo de configuración /etc/apt/preferences (revise el Sección 6.2.5, “Gestión de prioridades de los paquetes” para más detalles).
Ejecutar mini-dinstall en realidad inicia un demonio en segundo plano. Mientras ejecute el demonio, revisará el directorio incoming/ por nuevos paquetes cada media hora; cuando detecte un nuevo paquete lo moverá al repositorio y generará los archivos Packages.gz y Sources.gz. Si ejecutar un demonio es un problema, también puede invocar manualmente mini-dinstall en modo de lote (con la opción -b) cada vez que suba un paquete al directorio incoming/. mini-dinstall permite otras posibilidades documentadas en su página de manual mini-dinstall(1).