en software libre, tutoriales

Instalar Firebird en Ubuntu 9.10

Para la materia Base de Datos que aprobé el cuatrimestre pasado, tuve que instalar el “SGBD Firebird”:http://www.firebirdsql.org, que es una versión abierta y libre de *Borland Interbase*.

La cuestión por la que me decido a _postear_ esto es que la instalación desde los repositorios oficiales de _Ubuntu_ siempre me causaron problemas de permisos. Por ello, quise probar suerte intentando bajar el código fuente e instalar a mano el SGBD.

Como la experiencia fue satisfactoria, comparto con ustedes los pasos seguidos en dicha oportunidad.

Las pruebas fueron en todos los casos realizadas sobre el SO _Ubuntu 9.10 Karmic Koala_.

Comencé “descargando de aquí”:http://sourceforge.net/projects/firebird/files/firebird-linux-i386/2.1.3-Release/FirebirdCS-2.1.3.18185-0.i686.tar.gz/download
la versión que deseaba instalar. (Ustedes fíjense si quieren esa u otra versión).

Antes de instalar _Firebird_, debemos instalar el superservidor _xinetd_. Para quienes no lo sepan, _Xinetd_ es un servidor conocido como superservidor, que optimiza la carga del sistema, teniendo el mínimo de recursos escuchando y levantando los servicios en la medida en que son solicitados. Para mas detalles, “Wikipedia”:http://es.wikipedia.org/wiki/Xinetd siempre al pie del cañón :-).

Procedemos entonces a instalar _Xinetd_:

bc. $ sudo aptitude install xinetd
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho
Se instalarán los siguiente paquetes NUEVOS:
xinetd
0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 151kB de ficheros. Después de desempaquetar se usarán 414kB.
Escribiendo información de estado extendido… Hecho
Des:1 http://sft.if.usp.br karmic/main xinetd 1:2.3.14-7ubuntu2 [151kB]
Descargados 151kB en 4s (34,7kB/s).
Seleccionando el paquete xinetd previamente no seleccionado.
(Leyendo la base de datos … 00%
170698 ficheros y directorios instalados actualmente.)
Desempaquetando xinetd (de …/xinetd_1%3a2.3.14-7ubuntu2_i386.deb) …
Procesando disparadores para ureadahead …
Procesando disparadores para man-db …
Configurando xinetd (1:2.3.14-7ubuntu2) …
* Stopping internet superserver inetd [ OK ]
* Starting internet superserver xinetd [ OK ]

bc. Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho
$

Luego descomprimí el _*.tar.gz_ descargado dentro de mi carpeta personal (pueden hacerlo donde lo crean conveniente), y a continuación procedí a instalarlo con el _script_ que incluye a tal efecto:

bc. $ sudo ./install.sh
[sudo] password for tomas:

bc. Firebird classic 2.1.3.18185-0.i686 Installation

bc. Press Enter to start installation or ^C to abort
Extracting install data
Please enter new password for SYSDBA user: masterkey
/opt/firebird/bin/gsec: error while loading shared libraries: libstdc++.so.5: cannot open
shared object file: No such file or directory

bc. Please enter new password for SYSDBA user: ^C
$

*ERROR* :-(. O sea, me estaba faltando la _libstdc++.so.5_, lo cual se expresa en la linea:

bc. /opt/firebird/bin/gsec: error while loading shared libraries: libstdc++.so.5: cannot open
shared object file: No such file or directory

En _Ubuntu_ no existe esa versión de la librería, sino una mas avanzada (la .so.6). Con lo cual, procedemos a instalarla a mano.

“De esta pagina”:http://www.ubuntu-es.org/?q=node/68242, ver el post de _elcanyon_ el cual explica claramente lo que debemos realizar (lo replico aqui para tranquilidad):

bc. $ cd /tmp/
$ wget -c ftp://ftp.opentle.org/pub/linux-tle/archive/patong/pool/main/g/gcc-3.3/libstdc++5_3.3.6-13ubuntu2_i386.deb
$ dpkg -x libstdc++5_3.3.6-13ubuntu2_i386.deb libstdc++5
$ sudo cp libstdc++5/usr/lib/libstdc++.so.5.0.7 /usr/lib
$ cd /usr/lib
$ sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5
$

Luego de esto, la librería a sido instalado y _linkeada_ correctamente.

A continuación reintento la instalación:

bc. $ sudo ./install.sh

bc. Firebird classic 2.1.3.18185-0.i686 Installation

bc. Press Enter to start installation or ^C to abort
Extracting install data
Please enter new password for SYSDBA user: masterkey
Install completed
$

Como se puede apreciar, la instalación concluyo satisfactoriamente.

Observen que aunque usen _top_ o _ps aux_ no verán al demonio _Firebird_ corriendo. Eso es normal, ya que corre bajo la guardia de _Xinted_.

Ahora pasaremos a trabajar con el usuario _Firebird_. Al usuario _Firebird_ le asignamos una contraseña, puesto que con el debemos comenzar a realizar ciertas configuraciones del SGBD.

bc. $ sudo passwd firebird
Introduzca la nueva contraseña de UNIX:
Vuelva a escribir la nueva contraseña de UNIX:
passwd: contraseña actualizada correctamente
$

Entramos con dicho usuario e intentamos usar la base de datos:

bc. $ su firebird
Contraseña:
firebird@tomas-laptop:/$ cd /opt/
firebird@tomas-laptop:/opt$ ls
firebird firebird_20091128_0833.tar.gz
firebird@tomas-laptop:/opt$ cd firebird
firebird@tomas-laptop:/opt/firebird$ ls
aliases.conf doc firebird.conf firebird.msg include isc_event1.tomas-laptop isc_lock1.tomas-laptop lib README UDF
bin examples firebird.log help intl isc_init1.tomas-laptop isc_monitor1.tomas-laptop misc security2.fdb WhatsNew
firebird@tomas-laptop:/opt/firebird$ cd bin/
firebird@tomas-laptop:/opt/firebird/bin$ ls
changeDBAPassword.sh changeRunUser.sh fb_config fb_lock_mgr fbsvcmgr gdef gfix gsec gstat nbackup restoreRootRunUser.sh
changeGdsLibraryCompatibleLink.sh createAliasDB.sh fb_inet_server fb_lock_print gbak gds_drop gpre gsplit isql qli uninstall.sh
firebird@tomas-laptop:/opt/firebird/bin$ ./isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE ‘PRUEBA.FDB’;
SQL> EXIT;
$

Con esto comprobamos que el servidor esta funcionando correctamente. Pudimos usar la linea de comandos _isql_, interfaz interactiva de _Firebird_, y luego pudimos crear una base de datos.

Lo siguiente que debemos hacer es que _isql_ pueda ser llamado desde cualquier lugar de la consola. Osea, resultaría cómodo que no tengamos que dirigirnos a */opt/firebird/bin* para ejecutar los _scripts_ de consulta y mantenimiento de _Firebird_. Para esto debemos agregar dicha ruta al _path_ (ruta) de binarios del sistema:

bc. $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
firebird@tomas-laptop:/opt/firebird/bin$ export PATH=$PATH:/opt/firebird/bin
firebird@tomas-laptop:/opt/firebird/bin$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/firebird/bin

Este método solo dura por la sesión en la que nos encontramos. (Lo único que hace es reasignar un valor a la variable *$PATH* que cuando vuelva a cargarse en el sistema tendrá nuevamente el viejo valor). Como estamos con el usuario *firebird* lo dejaremos así para trabajar.

Luego haremos que el valor de *$PATH* se haga permanente para nuestro usuario de trabajo cotidiano. Pasemos a ello.

Observemos que ocurre si tratamos de usar _Firebird_ con nuestro usuario sin darle los permisos adecuados:

bc. $ cd /opt/firebird/bin/
$ ./isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE ‘PRUEBA.FDB’;
Statement failed, SQLCODE = -902
I/O error for file “/opt/firebird/bin/PRUEBA.FDB”
-Error while trying to create file
-Permission denied
SQL> EXIT;
$

Hay que hacer dos cosas:

# Agregar al usuario *tomas* (o el usuario que uses normalmente en tu sistema) al grupo _firebird_ que creo el _script_ de instalación del _SGBD_.
# Setear el _path_ a los binarios de _Firebird_ (/opt/firebird/bin/) de manera permanente para dicho usuario.

1. Lo haremos de la forma gráfica:

Desde el menú de _GNOME_:
Sistema -> Administración -> Usuarios y grupos

Allí dentro nos dirigimos al botón que nos da permisos de administrador (botón con una llave y con el texto “Pulse para realizar los cambios”). Luego ingresamos al botón “Gestionar grupos”.

Aparecerá un listado, y nos dirigimos al grupo *firebird*. Lo seleccionamos y vamos a Propiedades. Una vez dentro tildamos al usuario que queremos asignar al grupo. Salimos de las ventanas aceptando todo.

Hecho esto, el usuario *tomas* tiene permisos para ejecutar los _script_ de _Firebird_ y hacer llamadas a la Base de datos.

2. Ahora configuramos el _path_:

*De manera temporal (en la sesión actual):*

De la misma forma que lo hicimos con el usuario anterior:

bc. $ export PATH=$PATH:/opt/firebird/bin
$ isql -U SYSDBA -p masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> CREATE DATABASE “PRUEBA.FDB”;
SQL> EXIT;
tomas@tomas-laptop:~$

*Permanentemente:*

En una consola escribimos:

bc. $ echo “export PATH=$PATH:/opt/firebird/bin” >> /home/tomas/.bashrc

Esta configuración tendrá efecto luego del próximo reinicio del sesión.

Luego de esto, podemos trabajar con _Firebird_ con nuestro usuario normal.

Un dato adicional: Puede ocurrir que tengamos _scripts_ que reconozcan al programa _isql_ como isql-fb_. Esto ocurre porque cuando instalamos desde los paquetes del sistema, el ultimo nombre es con el cual se instala. La recomendación es crear un enlace simbólico al _script_, de la siguiente manera:

bc. $ sudo ln -s /opt/firebird/bin/isql /opt/firebird/bin/isql-fb

Luego de esto, el servidor _Firebird_ debería quedar listo para trabajar, con nuestro usuario diario.

Loading Facebook Comments ...

¿Algo para decir?

Comentario

Loading Disqus Comments ...