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!

21 comentarios para “El calvario de firebird en debian”

  1. Mariuz Dice:

    Firebird 2.0 is available only in sid(unstable) and lenny (testing)

    http://packages.debian.org/lenny/firebird2.0-super
    http://packages.debian.org/sid/firebird2.0-super

    You can see why firebird1.5 packages are called firebird2 here

    http://www.firebirdfaq.org/faq159/

  2. jachguate Dice:

    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?

  3. Firebird News » installing firebird 2.0.x on debian stable from rpm Dice:

    [...] Here is the guide in spanish for installing firebird 2.0 on debian using alien and firebird rpm package [ED:there’s More Than One Way To Do the install .] Permalink | Share (digg, etc):             [...]

  4. Mariuz Dice:

    I use it in ubuntu , but i will install it on an debian stable machine too

  5. jachguate Dice:

    Please… let us know if it works fine installing from the official debian packages.

  6. mariuz Dice:

    i have upgraded the server to testing , now i will test the 2.0.x packages

  7. mariuz Dice:

    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>

  8. mariuz Dice:

    here is how i upgraded to lenny

    i replaced any stable reference with testing in /etc/apt/sources.list
    and then all i did was apt-get update ; apt-get dist-upgrade

    here is my sources.list
    cat /etc/apt/sources.list

    deb http://ftp.ro.debian.org/debian/ testing main
    deb-src http://ftp.ro.debian.org/debian/ testing main

    deb http://security.debian.org/ testing/updates main

  9. jachguate Dice:

    Big cuestion is… ¿does it work as expected?

    Regards.

  10. mariuz Dice:

    i will run some tests to se if all is ok , if you want to …

  11. jachguate Dice:

    Of course I want… please let us know if everighing works fine…

  12. kotaro-kun Dice:

    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.

  13. demon Dice:

    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 :)

  14. jachguate Dice:

    @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.

  15. demon Dice:

    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.

  16. jachguate Dice:

    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.

  17. rtmex Dice:

    El paquete firebird2.0-super está para Debian etch en el repositorio de backports
    http://packages.debian.org/etch-backports/firebird2.0-super

    En esta liga mencionan como añadir ese repositorio
    http://luisperalta.es/debian_etch_anadiendo_el_repositorio_debian_backports

  18. jachguate Dice:

    la pregunta del millón es: ¿funciona?

  19. rtmex Dice:

    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

  20. rtmex Dice:

    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

  21. rtmex Dice:

    Por si a alguien le interesa, puse el proceso desde cero en mi blog. http://salomonrt.wordpress.com

    Saludos

Escribe un comentario