2009-09-13

Cómo instalar PL/Java en debian lenny

En este post voy a explicar la instalación de pljava sobre debian lenny. Para hacer este como me base en la mayor parte de la instalación de openxpertya para ubuntu, solo modificando unas cosas para que sea para debian

Es claro decir que debo tener instalado debian lenny en mi maquina, asumo que sirve para otras versiones y puede servir de guía para otras distribuciones, así como me sirvió a mí

Los pasos a seguir serán los siguientes:


  • Instalación de java

  • Instalación de postgresql

  • Configuración de las variables de entorno

  • Instalación y configuración de pl/java



Instalación de java
El primer paso es instalar Java5, que esta en los repositorios non-free de debian, entonces hay que editar el archivo /etc/apt/sources.list. Yo estoy usando como editor vim, pero puede ser en cualquier editor de texto


$ sudo vim /etc/apt/sources.list


Buscamos la línea que hace referencia a los repositorios de debian y la dejamos así


deb http://ftp.debian.org/debian lenny main contrib non-free


Primero se debe actualizar los repositorios, y luego se instala Java


$ sudo aptitude update
$ sudo aptitude install sun-java5-jdk


Tras la instalación, los paquetes de Java estarán en la ruta /usr/lib/jvm/java-1.5.0-sun-1.5.0.15 Ahora, para hacer más fácil su acceso, crearemos un enlace simbólico:


$ sudo ln -s /usr/lib/jvm/java-1.5.0-sun-1.5.0.15 /usr/lib/java


A continuación, comprobaremos que la versión de Java que estamos utilizando es la que hemos instalado. Como hemos empezado este artículo con una instalación limpia de Ubuntu Server, seguramente sólo tendremos una versión, pero lo comprobaremos igualmente por si acaso.


$ java -version
java version "1.5.0_15"
Java(TM) 2 Runtime Environment. Standard Edition (build 1.5.0_15-b04)
Java Hotspot(TM) Client VM (build 1.5.0_15-b04, mixed mode, sharing)


Primero descargaremos los binarios a nuestro servidor. Es recomendable utilizar, en este caso, la descarga desde Source Forge, ya que así podremos acceder al enlace de descarga directa. Una vez tengamos el enlace, ejecutaremos en nuestra consola:
Variables de Entorno


$ sudo export JAVA_HOME=/usr/lib/java
$ sudo env # para verificar que estén las rutas creadas.


Instalación de PostgreSQL 8.3

Para la instalación de la Base de Datos PostgreSQL se deben realizar los siguientes pasos.


$ sudo apt-get install postgresql postgresql-contrib

Podemos instalar el paquete "pgadmin3" (PgAdmin III) para administrar las bases de datos en un entorno gráfico. Para ello, ejecutaremos desde el terminal:


$ sudo apt-get install pgadmin3


Ahora, le indicamos a PostgreSQL de la ruta de la JVM.


$ sudo vim /etc/postgresql/8.3/main/environment


Añadimos la linea:


JAVA_HOME='/usr/lib/java'


Instalación y configuración de PL/Java

Antes de importar la base de datos de OpenXpertia, debemos habilitar el soporte PL/Java en PostgreSQL. El paquete que hay en los repositorios está preparado para gcj, pero no para la VM de Sun. Además, debido a un bug, imposibilita la ejecucción de la aplicación de manera correcta.

Debemos descargar, entonces, el PL/Java e instalarlo. Para ello haremos:


$ sudo wget http://pgfoundry.org/frs/download.php/1598/pljava-i686-pc-linux-gnu-pg8.3-1.4.0.tar.gz


Descomprimimos y copiamos los archivos donde deben ir. En esta instalación estamos suponiendo que el directorio donde se descargan los archivos es /root, así que crearemos primero una carpeta dentro de /root que se llame pljava/ para contener los archivos de PL/Java:


$ sudo mkdir pljava
$ sudo mv pljava-i686-pc-linux-gnu-pg8.3-1.4.0.tar.gz ./pljava/
$ cd pljava
$ sudo tar zxfv pljava-i686-pc-linux-gnu-pg8.3-1.4.0.tar.gz
$ sudo cp pljava.jar pljava.so /usr/lib/postgresql/8.3/lib/
$ sudo mkdir /usr/share/postgresql-8.3-pljava/
$ sudo cp install.sql uninstall.sql /usr/share/postgresql-8.3-pljava/


A continuación, procederemos a instalar PL/java. Antes de nada, hay que modificar el archivo pg_hba.conf para que las aplicaciones se conecten con la base de datos sin problemas. El archivo se encuentra en: /etc/postgresql/8.3/main/


$ sudo vi /etc/postgresql/8.3/main/pg_hba.conf


Para que no tengamos problemas de acceso a la base de datos, el archivo debe estar de la siguiente manera en las últimas lineas:


# Database administrative login by UNIX sockets
local all postgres trust

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 0/0 trust
# IPv6 local connections:
host all all ::1/128 trust


Además, modificaremos el archivo /etc/postgresql/8.3/main/postgresql.conf para indicar que escuche desde cualquier dirección ip:


listen_addresses = '*'


Y le añadimos al final:


dynamic_library_path = '$libdir:/usr/lib/postgresql/8.3/lib/'
custom_variable_classes = 'pljava' # list of custom variable class names
pljava.classpath = '/usr/lib/postgresql/8.3/lib/pljava.jar'


A continuación, modificaremos el archivo /etc/ld.so.conf y le añadimos las siguientes lineas:


/usr/lib/java/jre/lib/i386
/usr/lib/java/jre/lib/i386/client
/usr/lib/java/jre/lib/i386/native_threads
/usr/lib/java/jre/lib/i386/server


Ejecutamos ldconfig para volver a cargar la configuración y reiniciamos el servidor de PostgreSQL:


$ sudo /etc/init.d/postgresql-8.3 restart


Seguimos creamos un enlace simbólico para libjvm.so:


$ sudo ln -s /usr/lib/java/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so


Para finalizar, instalamos la base de datos:


$ sudo -u postgres psql < /usr/share/postgresql-8.3-pljava/install.sql

4 comentarios:

Unknown dijo...

GRACIAS POR LA AYUDA

Hpsaturn dijo...

Muchas gracias men por la ayuda, de verdad q estaba q me pegaba un tiro.

ppalma dijo...

Gracias. !!!!!

Unknown dijo...

Hola,

Te felicito porque es el mejor manual de instalacion de pljava que he visto.

Tengo una maquina debian funcionando que ya tiene java, postgres, etc. Necesito instalar el pljava pero en el paso final, cuando intento ejecutar el install.sql me da el siguiente error:

could not load library "/usr/lib/postgresql/8.1/lib/pljava.so": libjvm.so: cannot open shared object file: No such file or directory

El fichero se encuentra alli y es para esa version, modifique la configuracion del postgres para definir el lenguaje y do nde esta la libreria, reinicie postgres....

Estoy francamente perdido.... alguna pista?

Gracias,

Paco