Instalar el depurador de Postgresql en Debian / Ubuntu

Es una tarea que tenía pendiente desde hace tiempo, pero después de que mi amigo Pablo me comentara que lo había compilado en su Freidora Fedora y que funcionaba bastante bien me decidí a ponerlo.

 

Para poder depurar código en Postgresql hay que instalar una extensión en el servidor.  El problema es que esta extensión viene en forma de código fuente que hay que compilar, y para poder compilarlo necesitamos hacerlo contra el código de Postgresql, así que lo primero que hay que hacer es instalar el paquete postgresql-server-dev-8.4 (en mi caso 8.4 porque es la versión soportada por Openbravo 2.50).

 

Se suponía que con este paquete era suficiente ya que trae todos los archivos de cabecera necesario para compilar las extensiones de Postgresql, pero la verdad es que a mi no me funcionó, seguramente porque el código de la extensión espera encontrarse los fuentes de Postgresql en el formato que tiene cuando lo descargamos desde su página web. Lo que hice entonces fué descargame el código fuente desde la página de  Postgresql.

 

Primero tenemos que saber qué versión de Postgresql estamos ejecutando. Podemos verlo por ejemplo desde el gestor de paquetes.

dpkg -l | grep postgresql-8.4
ii  postgresql-8.4     8.4.9-0ubuntu0.11.04     object-relational SQL …

 

Ahora tenemos que descargar dicha versión.

 

wget http://ftp.postgresql.org/pub/source/v8.4.9/postgresql-8.4.9.tar.bz2

 

Descomprimimos y desempaquetamos.

 

tar xvfj postgresql-8.4.9.tar.bz2

 

Ahora tenemos que ejecutar el configure, pero para saber las opciones con las que se compiló nuestro servidor de postgres en ejecución podemos apoyarnos en la orden pg_config.

 

pg_config –configure | ./configure

 

Luego compilamos con make y ya tenemos el código de Postgresql preparado para compilar nuestra extensión.

 

Nota: No he indicado las librerias de desarrollo necesarias para compilar Postgres porque dependerá de vuestra instalación.

 

El siguiente paso es descargar el código de la extensión y copiarlo al directorio contrib. El problema es que la última versión disponible no compila correctamente pero si la última versión del cvs, así que utilizaremos esta última.

 

cd contrib

cvs -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/edb-debugger login
cvs -d :pserver:anonymous@cvs.pgfoundry.org:/cvsroot/edb-debugger checkout server

 

Actualización: Ahora el proyecto está en un repositorio git.

http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary

 

Esto nos generará un directorio que se llama server, entramos en él y hacemos make.

 

cd server

make

 

Si todo ha ido bien ya tenemos la extensión compilada, ahora sólo nos queda hacer un make install como root.

 

Nos quedan dos cositas para que la extensión funcione, la primera es cargarla en el arranque de  Postgresql. Editamos el archivo postgresql.conf de nuestro servidor y añadimos la siguiente linea.

 

shared_preload_libraries = ‘/usr/lib/postgresql/plugins/plugin_debugger’

 

Nota: la ruta puede cambiar dependiendo de la instalación.

La segunda cosa que hay que hacer es abrir pgadmin y ejecutar el script sql que encontraremos en el archivo pldbgapi.sql del código de la extensión. Pero antes deberemos substituir cada aparición de $libdir por «/usr/lib/postgresql» para que funcione.

 

El depurador es un poco limitado pero nos permite hacer cosas chulas como la siguiente.

 

 

Ahora ya podéis depurar vuestro código.

 

Cheli

Debian está en todas partes

He estado unos días de vacaciones a Perú y me han sorprendido muchas cosas de este país. Lo que no esperaba era encontrarme en Cuzco con un chico que llevaba una camiseta de Debian, cosas curiosas que le suceden a uno.

 

 

Cheli

Kmail de Debian Squeeze me da un Bad Passphrase

Ayer instalé Debian Squeeze desde la red y de momento estoy contentísimo, es una distro fantástica y eso que todavía no es la versión estable. El caso es que hoy me pongo a enviar unos correos-e y me daba error porque la clave de paso de la firma gpg era incorrecta, lo más gracioso del asunto es que ni siquiera me la pedía.

Me he puesto a investigar y enseguida he descubierto que me faltaban estos dos paquetes gnupg-agent y pinentry-qt4. Pues bueno los he instalado y me seguía sin funcionar ya que no se levantaba el daemon del agente. Mirando los archivos del paquete gnup-agent he localizado el script de arranque y me he puesto a investigar, entonces me he dado cuenta que en mi archivo ~/.gnupg/gpg.conf no tenía puesta la palabra «use-agent», total que la he añadido y he reiniciado la sesión y ahora por fin si que se levanta el demonio.

Supongo que el problema ha venido por heredar el /home desde otra instalación.

Un saludo.

Cheli