Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > debian > dbconfig

dbconfig

Tengo ya varios proyectos entre manos que quiero (necesito más bien) empaquetar para Debian, y he visto en dbconfig-common una forma organizada y efectiva de tratar con bases de datos.

Las siguientes son notas que he ido tomando mientras intentaba usar este mecanismo en mis programas.

Tipos de bases de datos

Se crean dos categorías para las bases de datos de un aplicación:

  • persistentes: aquellas que no pueden ser reconstruídas en su totalidad en caso de borrado de la base de datos, ó aquellas que si son eliminadas pueden causar graves trastornos de funcionamiento ó abrir agujeros en la seguridad. En esta categoría podemos incluir:
    • bases de datos relacionales
    • directorios LDAP
    • históricos y acumuladores
  • cachés: son las bases de datos que sí pueden ser reconstruídas suficientemente tras su borrado, ó que no causan problemas de funcionamiento ó seguridad en el sistema si son eliminadas. Y podemos incluir las siguientes:
    • Respuestas de configuración de paquetes (debconf)
    • Localización de archivos (locate)
    • Direcciones DNS
    • Lista de paquetes disponibles (apt)

Las bases de datos persistentes, según la --fhs-- deben ir en /var/lib/PACKAGENAME, mientras que los cachés irán en /var/cache/PACKAGENAME.

Instalación de paquetes con bases de datos

Configuración automática

Tendremos en cuenta lo siguiente:

  • Dado que el administrador de un sistema siempre sabe más que un programa se le debe proporcionar una forma de saltarse la configuración automática.
  • Se deben incluir instrucciones de instalación manual de la base de datos en la documentación del paquete.

Instalación de la base de datos

En el paquete deben incluirse llamadas a los programas dbconfig-common en los scripts de instalación del paquete (config, postinst, prerm y postrm), cargando primero las librerías de funciones, tal y como vemos en el ejemplo con una base de datos --mysql--:

    1 #!/bin/sh
    2 # config maintainer script for mypackage
    3 
    4 # source debconf stuff
    5 . /usr/share/debconf/confmodule
    6 
    7 # source dbconfig-common shell library, and call the hook function
    8 if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then
    9 . /usr/share/dbconfig-common/dpkg/config.mysql
   10 dbc_go mypackage $@
   11 fi

dbc_go es una función que ejecuta el código apropiado, basándose en el script desde el que está siendo llamada. Se le pasan varios parámetros, el nombre del paquete (mypackage en el ejemplo), y todos los que ha recibido el propio script.

Si el paquete no utiliza debconf será necesario instalar explícitamente el script config en él; la forma más sencilla es usar dh_installdebconf en el archivo debian/rules.

Actualización de la base de datos

PENDIENTE DE COMPLETAR

Borrado de la base de datos

PENDIENTE DE COMPLETAR

Enlaces

Sean Finney es el mantenedor del paquete debian dbconfigcommon y dispone de unas referencias interesantes: