El calvario de firebird en debian

Hace tiempo se me presentó la necesidad de correr servidores sql firebird en debian, la distribución de linux que mas utilizo actualmente.

Esto resultó en un total desastre utilizando los paquetes de instalación, pero la historia tiene un final feliz…

Para hacer algo de historia, comento que hace tiempo tengo varios servidores en producción en otras distribuciones, principalmente Mandrake/Mandriva, y todas funcionaron a la perfección desde el primer intento, por lo que, al decidir usarlo en debian no imaginé lo complicado que resultaría.

También comento que me decidí al uso de firebird sobre esta distribución debido a que hace tiempo leí una noticia relacionada con la aceptación del paquete de instalación, por lo que esta puede realizarse de manera simple e instantánea usando apt-get.

Desde el inicio resulta confuso. Actualmente uso la versión estable: etch y al realizar una búsqueda obtuve algo similar a:


alfa-server:/root#apt-cache search firebird
firebird2-classic-server - Firebird Classic Server - an RDBMS based on InterBase 6.0 code
firebird2-common - Common files for firebird clients and servers
firebird2-dev - Development files for Firebird - an RDBMS based on InterBase 6.0 code
firebird2-examples - Examples for Firebird - an RDBMS based on InterBase 6.0 code
firebird2-server-common - Common files for Firebird servers
firebird2-super-server - Firebird Super Server - an RDBMS based on InterBase 6.0 code
firebird2-utils-classic - Utilities for Firebird - an RDBMS based on InterBase 6.0 code
firebird2-utils-super - Utilities for Firebird - an RDBMS based on InterBase 6.0 code
otros paquetes...

Por tanto, supuse que se trataba de la versión 2 del manejador de base de datos, pero estaba equivocado, pues una vez instalado el servidor pude comprobar que el paquete contiene efectivamente la versión 1.5 😦¡Primera decepción!

Luego, al realizar las mas simples pruebas… el proceso se colgaba o estas simplemente no funcionaban. Solo logré realizar las operaciones mientras estaba conectado como root… pero como otro usuario o remotamente: ¡simplemente imposible!.

Intenté de todo lo que se me ocurrió; quienes me conocen saben que soy estricto y ordenado al realizar pruebas y, simplemente nada. Ni el classic server, ni el superserver. 😦¡Segunda, tercera y cuarta decepción!

Luego de investigar, descubrí que existen los paquetes de instalación de firebird 2, pero que estos se llaman firebird2.0-xxx y que actualmente solo están disponibles en las versiones experimental e inestable. Me decidí a probar… añadí los fuentes de dichas versiones y realicé la instalación. ¡Los resultados fueron los mismos! Cambiaron los mensajes de error… pero lo importante es que solo obtuve errores. 😦¡Quinta, sexta y séptima decepción!

Finalmente, y después de muchas horas invertidas en esto, se me ocurrió algo descabellado, basado en la conclusión de que los paquetes de instalación de firebird para debian no sirven: Instalar basado en algo que conocía desde antes: el rpm disponible para descarga en sourceforge.net

Encontré la forma de convertir el paquete rpm en un deb y después del esfuerzo invertido, valió la pena, pues funcionó de maravilla

Para quienes están viviendo, han vivido o quieren evitarse el calvario, aquí la solución completa para firebird 2.0.3. Para otras versiones supongo que bastará con actualizar la dirección de descarga y los nombres de archivo:

Descargar el script que realiza la instalación


#su
#cd /root
#apt-get update
#apt-get install alien
#apt-get install libstdc++5
#wget http://ufpr.dl.sourceforge.net/sourceforge/firebird/FirebirdSS-2.0.3.12981-1.i686.rpm
#alien -d -c FirebirdSS-2.0.3.12981-1.i686.rpm
#dpkg -i firebirdss_2.0.3.12981-2_i386.deb
#cd /opt/firebird
#chmod 644 aliases.conf
#ln -s /opt/firebird/bin/isql /bin/isql-fb
#ln -s /opt/firebird/bin/gbak /bin/gbak
#ln -s /opt/firebird/bin/gfix /bin/gfix
#ln -s /opt/firebird/bin/gsec /bin/gsec

Descargar el script que realiza la instalación

Personalmente estoy molesto y decepcionado del paquete de instalación de firebird para debian. Quizás esto se deba a mi ignorancia… y si es así, por favor que alguien me diga que hay que hacer para que firebird funcione sobre esta plataforma usando esos paquetes.

Creo que firebird solamente está obteniendo desprestigio y perdiendo posibles usuarios, que al darse cuenta del funcionamiento sobre debian, se llevan una mala impresión del producto: todo lo contrario a lo que normalmente produce cuando se evalúa sobre otras plataformas, pues su funcionamiento es excelente y su rendimiento no queda atrás.

En firebird, creo que lo que es susceptible de mejora, necesario y urgente para los administradores, es que se deje un registro (log) cada vez que ocurren errores atípicos, pues hasta ahora, no logré encontrar el archivo al que el servidor no tuvo acceso, lo que hubiera ayudado tremendamente a encontrar y corregir el problema sin llegar a esto.

Este post es muy largo. Quisiera decir mas cosas, pero seguramente ya estas aburrido de leerme. Espero que la solución propuesta te sirva!

Autor: jachguate

Entrepreneur, traveler and IT enthusiast passionate about Delphi, databases and networks.

34 opiniones en “El calvario de firebird en debian”

  1. Hi Mariuz. Thank’s for the feedback.

    I know Firebird 2.0 is available only in unstable and testing, as I say in my post, but it does not work… not for me. Are you using Firebird 2.0 in debian?

  2. I have removed all firebird2 and firebird1.5 packages and then installed the firebird2.0 ones

    apt-get install firebird2.0-super
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following extra packages will be installed:
    firebird2.0-common libfbclient2 libicu36
    Suggested packages:
    firebird2.0-doc
    Recommended packages:
    firebird-utils
    The following NEW packages will be installed
    firebird2.0-common firebird2.0-super libfbclient2 libicu36

    Created default security.fdb
    * Not starting Firebird 2.0 server manager
    * Use `dpkg-reconfigure firebird2.0-super’ to enable.
    :~# sudo apt-get install firebird2.0-examples firebird2.0-dev firebird-utils
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    The following extra packages will be installed:
    libfbembed2
    The following NEW packages will be installed
    firebird-utils firebird2.0-dev firebird2.0-examples libfbembed2
    Setting up firebird-utils (2.0.3.12981.ds1-1) …
    Setting up libfbembed2 (2.0.3.12981.ds1-1) …
    Setting up firebird2.0-dev (2.0.3.12981.ds1-1) …
    Setting up firebird2.0-examples (2.0.3.12981.ds1-1) …
    :~# dpkg-reconfigure firebird2.0-super
    Firebird 2.0 server manager not running.
    Firebird 2.0 server manager not running.
    Starting Firebird 2.0 server manager…done.
    Firebird 2.0 server manager already running.
    :~# cd /usr/share/doc/firebird2.0-examples/examples/empbuild/
    # sudo gunzip employee.fdb.gz
    # sudo chown firebird.firebird employee.fdb
    # sudo mv employee.fdb /var/lib/firebird/2.0/data/
    # isql-fb
    Use CONNECT or CREATE DATABASE to specify a database
    SQL> connect «employee.fdb» user «SYSDBA» password «masterkey»;
    Database: «employee.fdb», User: SYSDBA
    SQL> show tables;
    COUNTRY CUSTOMER
    DEPARTMENT EMPLOYEE
    EMPLOYEE_PROJECT JOB
    PROJECT PROJ_DEPT_BUDGET
    SALARY_HISTORY SALES

    SQL>

  3. Hola, yo estoy en las mismas que tú, he estado probado con los paquetes para debian, puesto que para mi, debian es mi distro preferida, bueno, con tu script haré la prueba, cualquier resultado bueno o fallido locomento en tu blog.
    Gracias por el dato.
    Atte.,
    kotaro-kun.

  4. Hola:
    Por si sirve a alguien.
    Yo le he podido instalar con los rpm del site (firebirdSS-2.0.4.13130.-1.nptl.i686.rpm) y con alien -c –scripts lo he pasado a *.deb
    Despues instalar la libreria libstc++5 (esta en los repos) y un dpkg -i paquete.deb .
    El problema que estoy teniendo es de acceso a la BD desde un win; me devuelve un mensaje de error en la conexion;
    user and password not defined. Ask your system administrator to setup a Firebird login .
    Pero es otra historia 🙂

  5. @demon: Me alegra que el script te haya servido. Quizás el problema de conexión desde Windows se deba a que la instalación linux no usa una contraseña por defecto, sino que genera una y la deja guardada en

    /opt/firebird/SYSDBA.password

    Podes usar esa o bien utilizar el gsec para poner tu propio password.

    Un saludo.

  6. Hola jachguate:
    Gracias por tu aportacion.
    En el gsec cambie el password, pero al principio no me dejaba validarme con el nuevo, asi que me hice un pequeño lio. Tambien lo intente con script que viene en el rpm (changeDBApassword.sh), y tampoco me fuciono, o eso pense. Me basto con reiniciar el servicio y ya va.Ya tengo acceso !!!
    He leido por ahi que no es recomendable modificar a mano el SYSDBA.password?? Que opinas de esto?? En este archivo la contraseña que aparece es distinta a la que actualmente utilizo, a pesar de los cambios. Te suena esto??
    Gracias otra vez.

  7. el archivo SYSDBA.password no tiene por que corresponder con el password actual de la base de datos. Para lo único que sirve es para que el instalador te comunique la contraseña que ha asignado al DBA durante la configuración inicial y podrías (y hasta debieras) borrarlo.

    Un saludo.

  8. Se instaló correctamente el servidor, lo que no se (por que nunca lo habia instalado en GNU/Linux) es que debo configurar para accesar a la base de datos desde un cliente windows.

    Intento conectarme pero la aplicación en windows me manda un error que dice «error mientras se trataba de abrir el archivo, permiso denegado» (lo dice en inglés).

    Debo editar algo en el archivo /etc/firebird/2.0/firebird.conf?

    Agradeceré si alguien me orienta para que pueda probarlo y comentarles si se pudo hacer la conexión remota o no.

    Saludos

  9. Confirmado
    Si funciona, ya pude conectarme desde otra máquina con una aplicación hecha en windows.

    El problema que me aparecia era porque a pesar de que en el archivo /etc/firebird/2.0/aliases.conf se ponga la ruta a la base de datos, la base de datos debe estar en un directorio en que el usuario firebird sea el propietario.

    La solución fue poner la base de datos en la ruta /var/lib/firebird/2.0/data/
    y desde luego especificar esa ruta en el archivo /etc/firebird/2.0/aliases.conf

  10. Hola jachguate, gracias por responder, te cuento que eh podido instalar y hacer correr firebird, pero no logro conectar la bd remotamente, estoy intentando registrarla desde ibexpert corriendo en terminr de windows.
    he compartido las carpeta con samba y veo los archivos, pero desde ibexpert tocando la carpeta de busqueda (database file) no encuentra la red. Le cree una conexion de red y de esa forma si logra encontrar la bd, pero no hay caso que conecte.
    Te agradeceria cualquir dato, gracias!!

    1. @Christian: No es necesario compartir ninguna carpeta. Para conectarte via TCP lo que hace falta es verificar que el puerto que usas esté abierto en el linux y construir una «cadena de conexión» válida en el windows. El puerto por defecto es el 3050 y la cadena sería algo como

      nombre-servidor:alias_o_ruta_base_datos
      o
      ip-servidor:alias_o_ruta_base_datos

      por ejemplo:

      milinux:/home/christian/prueba.fdb

      o

      192.168.147.148:pruebas

      donde pruebas es una entrada válida en el archivo alias.conf. Si usaste mi script, ese archivo está ubicado en /opt/firebird

      saludos.

  11. Hola,

    Ya instalé el FIREBIRD CLASSIC SERVER 2.1.3 con facilidad gracias a sus notas.

    Ahora bien, como inicio el servicio de Firebird?, ya que si veo los procesos, el de firebird no está.

    Si trato de conectarme con isql-fb que es el symlink de isql me da esto:
    »
    Use CONNECT or CREATE DATABASE to specify a database
    SQL> connect DEMO_2009.FDB user sysdba password masterkey;
    Statement failed, SQLCODE = -902
    Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
    SQL>
    »
    Tambien, cuando lo instalé el paquete con:
    dpkg -i FirebirdCS-2.1.3.18185-0.i686.deb

    Nunca me preguntó por passwords ni configuraciones, solamente lo descomprimió. No se si estoy obviando algo?

    Gracias por su ayuda… muy buen foro!

    1. Hola Ed. Dado que no usamos los paquetes de debian, no hay un procedimiento automatizado de configuración y el instalador genera una contraseña aleatoria para el sysdba, que se almacena en el archivo /opt/firebird/SYSDBA.password. En cuanto al servicio, por defecto se instala un script estándar en /etc/init.d/firebird para iniciar, reiniciar y detenerlo.

      Saludos. 🙂

  12. Ya lo resolví.
    Desinstalé el Clasic Server e instalé el Super Server.

    El password lo cambié con changeDBApassword.sh que se menciona en este blog.
    El old password es el que da al final de la instalación y el nuevo le puse el que yo quería.

    Ahora esta trabajando bien.

    Por otra parte, si lo quieren instalar (FirebirdSS 2.1.3) con algun sources.list, un compañero lo hizo con este y le funcionó:
    deb http://ppa.launchpad.net/mapopa/ubuntu hardy main

    Saludos.

  13. Buenas noches
    por mas que trato de ver un servicio firebird(activarlo, desactivarlo) verlo con top, nada
    Instalé 2.5-classic en ubuntu server 14.04 sin GUI

Replica a Fabio Ayala Cancelar la respuesta