martes, 18 de septiembre de 2007

Como instalar Postgres en Linux sin root

Hace un par de años trabajé en desarrollo en una máquina Linux, y realmente fui muy feliz :D Aunque todos mis compañeros directamente trabajaban con root, yo tenía mi propio usuario para trabajar y pasaba a root cuando tenía que instalar algo en particular. De todos modos mi usuario era parte del grupo root, así que mi vida era realmente fácil.
Debido a las vueltas de la vida, últimamente andaba medio oxidada en estos asuntos de instalaciones en Linux, pero en mi tarea docente, probando el ambiente en el que trabajan mis estudiantes, me tocó instalar Postgres en Fedora, con un usuario común y corriente. Justamente en la lista de correo de postgres hoy recibo un mail que dice "acaban de salir los RPM para Fedora y Red Hat". Bárbaro, pensé... instalo los rpm y listo!! pero no, porque los rpm los tiene que instalar root.
Entonces gracias a nuestro querido amigo Google encontré en el sitio
Web Experto un detallado tutorial de como instalar postgres en linux. Luego de leerlo a conciencia (a pesar de que las primeras instrucciones decían: cree el usuario postgres, cree carpetas en áreas del sistema), decidí que era suficientemente fiable, ajustando algunas cosas a mi ambiente.

Antes que nada comentar que logré tener éxito en mi instalación, la cuál está pensada para desarrollo, con lo que no es traumático que haya que levantar la base cada vez que se comienza a trabajar y se baja al terminarse los procesos del usuario.
Dicho esto paso a comentar las adaptaciones que hice al tutorial de Web Experto.

Preparación
Dado que Postgres correrá en la cuenta del usuario común que tengo, no necesito crear el usuario postgres.

Pero antes de continuar estableceremos algunas variables de entorno necesarias para el uso del servidor. En el directorio "home" del usuario editamos el archivo ".bashrc", si no existe lo creamos, y le agregamos las siguientes lineas:

PATH=$PATH:~/pgsql/bin
MANPATH=$MANPATH:~/pgsql/man
PGLIB=~/pgsql/lib
PGDATA=~/pgsql/data
LC_COLLATE=C
LC_CTYPE=C
LC_COLLATE=C
export PATH MANPATH PGLIB PGDATA LC_COLLATE LC_CTYPE LC_COLLATE

Aquí modifiqué las rutas para que estuvieran dentro de los directorios de mi usuario.

Lo primero que debemos hacer es conseguir los fuentes del software, los podemos bajar gratuitamente de http:/www.postgresql.org/

Una vez que tenemos el fuente, debemos descomprimirlo en un directorio desde donde lo compilaremos. En mi caso uso ~/postgres/ para bajar

En mi directorio de usuario
# cd
Creamos el directorio donde se compilará el software
# mkdir postgres
Creamos el directorio donde se instalara el software una vez compilado
# mkdir pgsql

Ya tenemos los directorios donde ubicaremos el cógido fuente a compilar y los binarios y demas archivos necesarios para el uso del serividor una vez que este compilado e instalado.

Ubicarnos en el directorio base (~/postgres)
# cd postgres
Finalmente debemos descomprimir el archivos con:
# tar xvfz postgresql-6.5.tar.gz

Con esto obtenemos un directorio llamado: postgresql-8.2.5 que es la base del árbol de directorios conteniendo el código fuente, la documentación y demás archivos necesarios.

Configuración

Previo a la compilación en si, se debe configurar el código fuente para nuestra plataforma en particular, en este proceso entra como factor de gran importancia la designación del directorio donde se instalará PostgreSQL, esto se hace mediante la variable "prefix".

# cd ~/postgres/postgresql-8.2.5/src
# ./configure --prefix=~/pgsql

Este script ajustará la compilación a nuestro ambiente, donde prefix es el directorio base donde se instalara el servidor una vez compilado, si obviamos este parámetro por defecto toma el directorio /usr/local/psql

Compilación

El proceso de compilación es idéntico a cualquier otro programa. En esta caso la documentación recomienda una secuencia algo distinta pero con el mismo resultado.

# gmake all >& make.log &
# tail -f make.log

Si todo salió como es de esperar, tail nos muestra la ultima linea del archivo de log, la que dice:

All of PostgreSQL is successfully made.
Ready to install.

Instalación de binarios

Procedemos ahora a instalar los binarios y archivos adicionales. Si ya nos encontramos en el directorio "~/pgsql/postgresql-8.2.5/src" pasamos directamente a la segunda línea de la secuencia.

# cd ~/pgsql/postgresql-8.2.5/src
# gmake install >& make.install.log &
# tail -f make.install.log

Luego de unos cuantos segundos en el monitor veremos la siguiente línea, esto nos indica que ya termino la instalación del servidor.

Thank you for choosing PostgreSQL, the most advanced open source database engine.

Nota: en mi instalación no apareció esta línea, pero sé que terminó exitosamente.

Instalación de la Documentación

Solo nos resta instalar la documentación, para ello debemos posisionarnos en el directorio "~/pgsql/postgresql-8.2.5/doc" y ejecutar:

# make install

Librerías

Dado que este paso de instalar las librerías para el sistema lo tenía que hacer root, directamente me lo saltee.

Creación de las bases de datos

El siguiente paso es crear las bases de datos básicas para el funcionamiento del servidor de SQL. Esto se hace con los scripts que quedaron en el directorio bin de instalación del postgres: ~/pgsql/bin

# initdb

Prueba

Bien, ahora vamos a ver si todo salio como es de esperar, primero vamos a lanzar el servidor de SQL de PostgreSQL

# postgres -D ~/pgsql/data &

Creamos la base de datos de prueba con la siguiente linea de comando:
# createdb
Finalmente nos conectamos al servidor con el cliente:
# psql


Luego de esto tendrán que seguir sus manuales de postgres (y psql) para crear sus usuarios de la base, sus bases de datos, etc...
Suerte!

No hay comentarios: