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 [email protected] fi
IMPORTANT: Cal que el vostre paquet Debian tingui la dependència: dbconfig-common
$ 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 [email protected] 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 [email protected]
Ara ja podeu crear el paquet:
$ dpkg-builpackage
Ara proveu el paquet amb:
$ sudo dpkg -i ../bashdebianesqueleton_0.1-1_i386.deb