Instalación de un repositorio debian con reprepro

Lenny Updated

Cuando se pega mucho (pero mucho, mucho) con debian, lleva un momento en que empieza a hacer o modificar paquetes y es entonces cuando el uso de un repositorio personal es una buena idea. Hace unos años, crear y sobre todo mantener un repositorio de paquetes de debian era doloroso por los scripts que había que ejecutar, puesto que funcionaban una de cada dos veces y estaban llenos de parches. Afortunidamente han surgido unos cuantos programas que facilitan mucho la tarea de instalación y sobre todo de mantenimiento de los repositorios y, dentro de todos ellos, mi favorito es reprepro.

No es excesivamente pesado, se maneja completamente desde la línea de comandos y el cifrado de los ficheros que contienen las sumas MD5 (los ficheros Release) es transparente. También, la configuración de cada repositorio es sencilla y mediante ficheros de texto y toda la información de los paquetes se almacen en una base de datos Berkeley, por lo que no es necesarios ningún SGBD.

Tener los repositorios disponibles para un sólo equipo no es muy inteligente así que se suelen instalar bajo servidores web o ftp. Los repositorios de mi red están en ranas, mi servidor raspberry NAS, así que por motivos de rendimiento y recursos preferí instalar un servidor pure-ftpd antes que un apache2. Como ambos pillan fuera del ámbito de esta guía, os dejo los enlaces de configuración de ambos:

Instalación

Instalamos conjuntamente reprepro y pure-ftpd.

sudo aptitude install reprepro pure-ftpd

pure-ftpd

Configuramos pure-ftp según se explica en los enlaces superiores y configuramos unas cuantas cosas más.

  • crear usuario ftp con directorio /media/nas/ftp/.
sudo adduser --system --disabled-password --disabled-login --home /media/nas/ftp ftp
Añadiendo el usuario del sistema `ftp' (UID 113) ...
Añadiendo un nuevo usuario `ftp' (UID 113) con grupo `nogroup' ...
Creando el directorio personal `/media/nas/ftp' ...
  • asignar permisos a mi usuario en el directorio de los repositorios.
$ chown -R diego:diego /media/nas/ftp/

reprepro

Toda la configuración y gestión del repositorio con reprepro se realiza como un usuario sin privilegios, salvo el de escribir en el directorio de los repositorios.

Dada la versatilidad de reprepro puedo crear tantos repositorios como quiera. Si, por ejemplo, quiero tener los repositorios de cada proyecto organizados, puedo crear dentro de /media/nas/ftp un directorio, proy01, que contenga los repos proy01, partners y apps. Para el segundo proyecto crearía proy02 con los repos proy02 y extras y así… Cada proyecto con sus paquetes y, probablemente, un repo general con debian, con jessie, wheezy y sid dentro.

  • debemos crear una llave gpg de 2048 bits con que firmar los paquetes.
$ gpg --gen-key
$ gpg --list-keys
  • exportamos la parte pública de la llave a un fichero asc.
$ gpg --armor --export 12345678 > /media/nas/ftp/ranas.asc
  • creamos el fichero de configuración del repo nimhix.
$ mkdir /media/nas/ftp/nimhix/conf
$ cat /media/nas/ftp/nimhix/conf/distributions
Origin: n1mh.org
Label: paquetes de n1mh.org
Codename: boyd
Architectures: i386 amd64
Components: main contrib non-free
Description: paquetes generador para uso particular
DebIndices: Packages Release . .gz .bz2
SignWith: 12345678

Las líneas más jugosas son Architectures, donde indicamos que arquitecturas están soportadas, Components, donde se enumeran las ramas del repo y SignWith, donde especificamos la clave pública que se usará para firmar los paquetes. Codename es el nombre en clave del repositorio y si, en este caso viene de la serie Justified.

  • creamos el repositorio y los enlaces. Si estamos en el directorio principal del repositorio (donde se ve el directorio conf), no es necesario pasar el argumento -b.
$ reprepro -VVV --ask-passphrase -b ~ftp/nimhix export
$ reprepro -VVV --ask-passphrase -b ~ftp/nimhix createsymlinks

Gestionando paquetes

Todos los ejemplos se ejecutan desde el directorio principal (al mismo nivel que conf). De no ser así, el argumento -b es tu amigo. 🙂

Listar paquetes del repositorio

reprepro list boyd

Añadir nuevos paquetes (o versiones actualizadas)

reprepro --ask-passphrase includedeb boyd ~/escritorio/paquetes/*deb

Borrar paquetes

reprepro --ask-passphrase remove boyd firefox-esr

Y con esto ya tenemos cuantos repositorios necesitemos. Actualmente es ranas quien sirve los paquetes en mi red local, así que el gasto de recursos está bastante contenido (con pure-ftpd). Si, además, configuras samba para «tirar» los paquetes en el directorio del ftp, lo tienes todo más a mano.

Sentimos molestarte con lo de las Cookies, pero es por imperativo legal. Puedes ver aquí la Política de Cookies, si continúas navegando te informo que la estás aceptando ;)    Ver
Privacidad