Compilar PostgreSQL 9.0alpha en GNU/Linux

Ubuntu Karmic Koala (9.10) y Debian Lenny (5.0)

La siguiente información es para compilar, generar e instalar el paquete provisorio para pruebas en distribuciones Debian o derivadas. No es para uso en producción. Para más información ver  Wiki Oficial y  Documentación Oficial

Instrucciones

  • Instalar paquetes necesarios compiladores, bibliotecas (libc, readline, gettext,xml2, openssl zlib, perl, python) y checkinstall
  • Bajar y descomprimir las fuentes
  • Configurar la compilación (habilitar ssl, plperl, plpython, xml, nls y depuración)
  • Generar (compilar) el paquete
  • Instalar el paquete

Pasos (terminal)

apt-get install build-essential libc6-dev libcomerr2 libreadline-dev libxml2-dev libssl-dev zlib1g-dev libperl-dev  python-dev gettext checkinstall
wget http://wwwmaster.postgresql.org/redir/378/f/source/9.0alpha5/postgresql-9.0alpha5.tar.bz2
tar xvjf postgresql-9.0alpha5.tar.bz2
cd postgresql-9.0alpha5
./configure --with-openssl --with-perl --with-python --with-libxml --enable-nls --enable-cassert --enable-debug
cat << EOF > description-pak
PostgreSQL 9.0alpha5 provisional test package
EOF
checkinstall -y --pkgname=postgresql --pkgversion=9.0alpha5 --pkglicense=TPL --maintainer=reingart@gmail.com \
             --requires=libc6,libssl0.9.8,libxml2,zlib1g,libpython2.6,libperl5.10,perl,libcomerr2,tzdata,locales \
             --provides=postgresql-9.0alpha5 --pkgrelease=1 \
             --pkgsource=http://www.postgresql.org/ftp/source/9.0alpha5/ \
             --install=no --reset-uids=yes \
             -D make install
dpkg -i postgresql_9.0alpha5-1_i386.deb

Nota: para Debian Lenny cambiar libpython2.6 a python2.5 en el --requires de checkinstall

Advertencia: El paquete instalará los archivos en /usr/local/pgsql, no usar si ya tiene una instalación personalizada en dicho directorio.

Pruebas

Luego de instalar el paquete, se puede crear una instancia (cluster) de Postgres 9.0 en nuestro directorio (por ej. en ~/pg9alfa como directorio data) e iniciar el servidor de pruebas:

/usr/local/pgsql/bin/initdb ~/pg9alfa
# cambiar puerto en ~/pg9alfa/postgresql.conf (por ej. port=5439)
/usr/local/pgsql/bin/pg_ctl start -D ~/pg9alfa -l ~/pg9alfa/logs -o"-p 5439" 

Luego debería ser posible conectarse a dicho servidor con psql:

/usr/local/pgsql/bin/psql postgres -p 5439 

y debería aparecer (por ej, creando el lenguaje PlPython y ejecutando una prueba de DO):

psql (9.0alpha4)
Type "help" for help.

postgres=# create language plpythonu;
CREATE LANGUAGE
postgres=# do language plpythonu 'plpy.info("hola")';
INFO:  hola
CONTEXT:  PL/Python anonymous code block
DO
postgres=#