Blogia
bappf

Instalación de PostgreSQL sobre Cygwin

Resumen

Este documento explica cómo instalar la base de datos PostgreSQL sobre Cygwin.
Nota: se consideran sus versiones 7.4.5 y CYGWIN_NT-5.0 respectivamente.

Instalación de Cygwin

Todo lo que hace falta saber sobre cygwin se puede consultar en
http://www.cygwin.com
A la hora de instalar el paquete, basta con una configuración mínima (pero que, por supuesto, incluya a Postgres).

Instalación de PostgreSQL

1.- Modificación del "path" de Windows:

Es necesario añadir al "path" de Windows el camino de los directorios donde están contenidos los ficheros cygserver.exe y cygwin1.dll. Bajo Cygwin, se encuentran en /usr/sbin y /bin respectivamente. Bajo Windows se corresponderían con C:/Cygwin/usr/sbin y C:/Cygwin/bin, por ejemplo, de ser C:/Cygwin el directorio raíz de Cygwin.

2.- Variable de entorno CYGWIN:

En primer lugar es necesario definir la variable de entorno CYGWIN como "server". Los manuales especifican "añadir" en lugar de "definir", dando a entener que CYGWIN pudiera contener información necesaria para otros programas. Probablemente, en una situación general, CYGWIN es una sucesión de cadenas enlazadas de alguna manera que habría que averiguar llegado el caso.

3.- Instalación de cygserver como servicio (demonio) de Windows:

Desde la consola de Cygwin, se ejecuta

$ cygserver-config

4.- Creación de la cuenta del usuario "postgres":

$ net user postgres CoN7rA5eNnA5eCrEtA! /add /fullname:postgres /comment:'PostgreSQ, cuenta de usuario' /homedir:"$(cygpath -w /home/postgres)"
$ mkpasswd -l -u postgres >>/etc/passwd

En el primer comando, CoN7rA5eNnA5eCrEtA! podría, debería, cambiarse por otra contraseña a elegir. Idem, con el comentario. Ignoro si cambiar el nombre del usuario provoca algún tipo de problema.

5.- Privilegios para el usuario "postgres":

En Windows, se crea el usuario "postgres" y se le asigna el privilegio "Log on as a service".

6.- Instalación del servicio (demonio) "postmaster":

$ cygrunsrv --install postmaster --path /usr/bin/postmaster --args "-D /var/postgresql/data -i" --dep cygserver --termsig INT --user postgres --shutdown

El comando anterior "registra" el servicio, pero no lo levanta: todavía quedan unos pasos antes de verlo correr. La ubicación del directorio de datos es la recomendada, pero existen, y se ven por ahí, alternativas igualmente razonables. El significado de las opciones restantes puede consultarse en la ayuda de cygrunsrv.

7.- Creación del directorio de datos:

$ mkdir -p /var/postgresql/data
$ chown postgres /var/postgresql/data

8.- Arranque de cygserver:

$ cygrunsrv -S cygserver

9.- Conexión como "postgres":

$ login

Cygwin pregunta entonces por el usuario, "postgres", y su contraseña.

10.- Configuración de la base de datos:

$ initdb -D /var/postgresql/data

11.- Arranque del servicio (demonio) "postmaster":

$ cygrunsrv -S postmaster

Una vez arrancado, se puede comprobar si funciona correctamente ejecutando

$ cygrunsrv -Q postmaster

o bien desde la consola de servicios de Windows. Pistas sobre los problemas que pueda presentar el arranque pueden consultarse en /var/log/postmaster.log o en el "NT Event Log" de Windows.

12.- Conexión a PostgreSQL:

$ psql -U postgres template1

El programa anterior, psql, permite lanzar cueris sobre PostgreSQL desde una consola de texto. Existe, sin perjuicio de otros, un cliente gráfico, pgAdmin III.

Otras cuestiones

1.- PostgreSQL sobre Cygwin sólo tolera la locale "C" porque el mismo Cygwin no las implementa completamente. Por eso, hay que definir la variable de entorno LANG como "C" o, simplemente, dejarla sin definir. Si no, initdb no funciona.

2.- PostgreSQL sobre Cygwin puede no arrancar o funcionar incorrectamente si determinados ficheros y directorios carecen de los permisos adecuados. El problema puede solucionarse habitualmente de la manera siguiente:

$ chmod a+rwx /tmp
$ chmod a+rx /usr/bin /usr/bin/*
$ chmod a+rw /var/log # esto podría afectar el funcionamiento de otros servicios (demonios)

3.- Podría ser necesario incrementar el número de semáforos (SEMMS) globales de cygserver. Para ello hay que editar el fichero /etc/cygserver.conf introduciendo en él una línea del tipo

kern.ipc.semmns 100

para, después, reiniciar cygserver. Si no, PostgreSQL podría no funcionar adecuadamente. Por ejemplo, initdb podría no arrancar si postmaster estuviese levantado.

0 comentarios