Repositorio Debian
Esta página contiene anotaciones sobre la creación y el mantenimiento de un almacén de paquetes Debian utilizando para ello el programa debpool.
Existe otro programa documentado con el mantener un repositorio: mini-dinstall.
Sumario
Enlaces y referencias
Flujo de trabajo
- Los paquetes se reciben en un directorio determinado.
- El programa debpool revisa ese directorio
- Periódicamente si funciona como demonio
- Puntualmente si se invoca directamente
- y procesa los paquetes
- carga los archivos
.changes
que encuentra en el directorio - instala los archivos necesarios en el árbol de directorios pool
- actualiza los archivos índice
Packages[.gz]
ySources[.gz]
con la nueva adquisición.
- carga los archivos
Instalación y configuración
Una vez instalado el paquete debpool realizamos unos cuantos ajustes para poder emplearlo cómodamente.
Usuario especial
Creamos un usuario para que manipule el repositorio de paquetes y para que ejecute los programas sin privilegios excesivos:
# adduser --system --group --shell /bin/bash --gecos 'Debian Pool Manager' debpool
Directorio raíz del repositorio
El directorio raíz predeterminado es /var/cache/debpool
y como vamos a respetarlo tendremos que ajustar su propiedad y sus permisos ya que mientras que el usuario debpool debe poder trabajar con él, también es necesario que exista acceso de escritura al directorio de entrada de paquetes (incoming) y de lectura y paso para el servidor web.
Como empleamos el directorio que definido en el paquete debpool tendremos que avisar al sistema de paquetería de Debian que la propiedad de todos estos archivos va a ser ahora distinta:
# dpkg-statoverride --update --add debpool debpool 0755 /var/cache/debpool
Configuración
El archivo /etc/debpool/debpoolrc
está escrito en lenguaje Perl y contiene la configuración del programa debpool dividida en varias secciones, de las cuales voy a anotar aquí las que considero de uso más inmediato.
Directorios y permisos
# Raíz de todos los demás archivos
$Options{'archive_dir'} = '/var/cache/debpool';
# ...
# Permisos de creación de directorios y archivos
# (en este caso de la base de datos de paquetes)
$Options{'db_dir_mode'} = 0750;
$Options{'db_file_mode'} = 0640;
# ...
# Directorio de recepción de paquetes y permisos de acceso especiales
$Options{'incoming_dir'} = "$Options{'archive_dir'}/incoming";
$Options{'incoming_dir_mode'} = 01775;
El resto de los directorios se basan en la variable $Options{'archive_dir'}
y no conviene tocarlos a menos que sepa muy bien qué se está haciendo.
Ramas y arquitecturas incluídas en el repositorio
Las siguientes variables definen los nombres de las ramas o versiones Debian que el repositorio acepta así como las secciones y las arquitecturas.
# Ramas incluídas y sus alias
$Options{'dists'} = {
'unstable' => 'sid',
'stable' => 'squeeze',
'oldstable' => 'lenny',
};
# Secciones
$Options{'sections'} = [ 'main', 'contrib', 'non-free' ];
# Arquitecturas posibles
$Options{'archs'} = [ 'i386', 'sparc', 'powerpc', 'amd64' ];
Registro de eventos y otros matices
# Archivo donde registrar la actividad del repositorio
$Options{'log_file'} = "/var/log/debpool.log";
# Activar modo demonio (s/n)
$Options{'daemon'} = 0;
# Segundos entre revisiones del directorio ''incoming''
$Options{'sleep'} = 300;
# Si está activo se permite que versiones antiguas de paquetes
# reemplacen a versiones más nuevas
$Options{'rollback'} = 1;
# Si está activo se emplea el mecanismo 'inotify' para
# controlar cambios en el repositorio
$Options{'use_inotify'} = 1;
En el caso de situar el registro de eventos en el directorio genérico conviene crearlo con los permisos adecuados:
$ LOGFILE=/var/log/debpool.log $ sudo touch $LOGFILE $ sudo chown debpool.adm $LOGFILE $ sudo chmod 0640 $LOGFILE
y añadir una entrada para que sea rotado con el resto.
Uso del repositorio
Enviando paquetes
Para añadir paquetes al repositorio Debian existen varias utilidades disponibles, como dupload y dput, pero el proceso básicamente consiste en copiar en el directorio incoming del mismo los archivos que componen dicho paquete.
Suele emplearse un archivo con extensión .changes que lista todos los demás y el resultado de la operación de envío se registra en otro fichero con el mismo nombre y la extensión .upload.
Instalando paquetes
La primera parte es proporcionar un acceso vía web a los paquetes y para ello podemos añadir una estrofa a la configuración del servidor web:
Alias /debian /var/cache/debpool/
Después, una vez que tengamos acceso por esta vía a los paquetes, debemos incluir la fuente en el sistema de paquetes Debian. Para esto es mejor crear un archivo específico con las indicaciones para nuestro repositorio e instalarlo en la zona que apt reserva para ello:
# cat > /etc/apt/sources.list.d/personal.list deb http://example.com/debian sid main contrib deb-src http://example.com/debian sid main contrib ^D # apt-get update
Así bastaría con renombrar la extensión del archivo para desactivar el repositorio de paquetes.