IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Com funciona?

Aquest paquet és utilitzat per altres paquets per tal de fer la típica configuració/instal·lació de la base de dades relacional (MySQL, PostgreSQL...).

Normalment es tant senzill com que el paquet proporcioni el fitxer:

/usr/share/dbconfig-common/data/NOMPAQUET/install/GESTOR_BASE_DE_DADES

On GESTOR_BASE_DE_DADES normalment serà:

Per exemple:

/usr/share/dbconfig-common/data/phpmyadmin/install/mysql

Aquest fitxer ha de contindre les instruccions mysql per tal d'instal·lar la base de dades.

I aleshores es configura Debconf per tal que durant la instal·lació del paquet s'instal·li una base de dades. Cal posar al fitxer config del paquet quelcom similar a:

#!/bin/sh

set -e

. /usr/share/debconf/confmodule

if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then
        . /usr/share/dbconfig-common/dpkg/config.mysql
        dbc_go phpmyadmin $@
fi

IMPORTANT: Cal que el vostre paquet Debian tingui la dependència: dbconfig-common

Exemple pas a pas

$ svn co http://www.iesebre.com/subversion/projectes/bashdebianesqueleton/
$ mv bashdebianesqueleton bashdebianesqueleton-0.1
$ cd bashdebianesqueleton-0.1/
$ sudo make install_dev_tools
$ make build_workspace

Ara editeu el fitxer debian/control i afegiu:

$ joe debian/control
Depends: ${shlibs:Depends}, ${misc:Depends}, debconf, dbconfig-common

Ara feu que l'install del Makefile us instal·li el fitxer /usr/share/dbconfig-common/data/bashdebianesqueleton/install/mysql:

$ joe Makefile

Afegiu la variable:

DBCONFIGCOMMONDIR=usr/share/dbconfig-common/data/$(APLICATION_NAME)/install
DBCONFIGCOMMONFILE=$(DBCONFIGCOMMONDIR)/mysql

I a la tasca install afegiu:

mkdir -p $(DESTDIR)/$(DBCONFIGCOMMONDIR)
$(INSTALL) -o $(OWNER) -g $(GROUP) -m 644 $(DBCONFIGCOMMONFILE) $(DESTDIR)/$(DBCONFIGCOMMONFILE)

Ara creeu el fitxer:

$ mkdir -p usr/share/dbconfig-common/data/bashdebianesqueleton/install
$ joe usr/share/dbconfig-common/data/bashdebianesqueleton/install/mysql

Per exemple podríeu posar:

-- phpMyAdmin SQL Dump
-- version 3.2.2.1deb1
-- http://www.phpmyadmin.net
--
-- Servidor: localhost
-- Temps de generació: 18-02-2011 a les 18:35:02
-- Versió del servidor: 5.1.37
-- PHP versió: 5.2.10-2ubuntu6.7

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Base de dades: `bashdebianesqueleton`
--

-- --------------------------------------------------------

--
-- Estructura de la taula `taula1`
--

CREATE TABLE IF NOT EXISTS `taula1` (
  `id` int(11) NOT NULL,
  `field1` int(11) NOT NULL,
  `field2` varchar(52) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Bolcant dades de la taula `taula1`
--


-- --------------------------------------------------------

--
-- Estructura de la taula `taula2`
--

CREATE TABLE IF NOT EXISTS `taula2` (
  `Id` bigint(20) NOT NULL,
  `field1` varchar(50) NOT NULL,
  `field2` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Bolcant dades de la taula `taula2`
--

Ara creeu el fitxer config de debconf

$ joe debian/config

I poseu:

#!/bin/sh

set -e

. /usr/share/debconf/confmodule

if [ -f /usr/share/dbconfig-common/dpkg/config.mysql ]; then
        . /usr/share/dbconfig-common/dpkg/config.mysql
        dbc_go bashdebianesqueleton $@
fi

db_version 2.0
db_go || true

NOTA: Noteu que a l'exemple el nom de paquet és molt llarg i l'usuari de base dades mysql no podrà tenir el mateix nom. Us trucarà el nom al màxim de caràcters de l'usuari de base de dades a MySQL: bashdebianesquel

També cal que creeu el fitxer postinst:

$ mv debian/postinst.ex debian/postinst
$ joe debian/postinst

Al case configure afegiu:

# source debconf stuff    
. /usr/share/debconf/confmodule
# source dbconfig-common stuff
. /usr/share/dbconfig-common/dpkg/postinst.mysql
dbc_go bashdebianesqueleton $@

Ara ja podeu crear el paquet:

$ dpkg-builpackage

Ara proveu el paquet amb:

$ sudo dpkg -i ../bashdebianesqueleton_0.1-1_i386.deb

Vegeu també

Enllaços externs