Compilación de PostgreSQL y pgInstaller en Windows

== Introducción ==
Esto es una guía para compilar PostgreSQL y generar el instalador en español (bajo windows). 
Para más información ver:
* Documentación oficial
* Proyecto de traducción al español
Estos pasos fueron probados en la versión de Windows XP SP2 (2600) en Español (Argentina)
== Requisitos: ==
* Instalar VC++ 2005 Express Edition
* Instalar Active Perl
* Instalar Microsoft Platform SDK
* Instalar Wix
* Instalar el resto de las dependencias que correspondan: 
** OpenSSL (para conexiones SSL)
** Kerberos (para autenticación)
** Gettext y iconv (para NLS)
** Python 2.5 (para pl/python)
** TCL (para pl/tcl)
** XML2, XSLT, etc. (para xml)
** ZLib (para compresión de dumps)
** etc.
* Bajar y compilar los añadidos en el instalador de windows:
** PgAdmin3
** StackBuilder
** PlJava
** pldebugger
== Pasos para generar PostgreSQL y PgInstaller ==
* Crear un directorio c:\pgBuild
* Crear un directorio c:\pgBuild\BuildTrees
* Bajar las fuentes de postgresql (del tar.bz2) y descomprimirlas en c:\pgBuild\BuildTrees\pgsql
* Bajar las fuentes del instalador (desde cvs) en c:\pgBuild\BuildTrees\pginst-8.3
* Buscar el archivo vcredist_x86.exe del ZIP del Instalador y copiarlo a la carpeta c:\pgBuild\vcredist_x86
=== Pasos para compilar PostgreSQL ===
* Editar el archivo c:\pgBuild\BuildTrees\pgsql\src\tools\msvc\config.pl y habilitar/deshabilitar las características a compilar (para el instlador, deberían compilarse todas las características).
* Iniciar el 'Símbolo del Sistema Visual Studio 2005':
 cd c:\pgBuild\BuildTrees\pgsql\src\tools\msvc\
 build
 install c:\pgBuild\pginst-8.3\pgsql
* Compilar la ayuda (en un unix), procesarlo con Html Help Workshop (en windows) y copiarlo a pgsql\doc\htmlhelp.chm
=== Pasos para generar PgInstaller ===
* Copiar paths.projinc.in a paths.projinc dentro de pginst-8.3 y cambiar las siguientes líneas: 
 <WixDir>C:\Archivos de Programa\Windows Installer XML v3\bin</WixDir>
 <PKGDIR>$(PGBUILD)\pginst-8.3</PKGDIR>
 <MSVCMSMS>C:\Archivos de Programa\Archivos Comunes\Merge Modules</MSVCMSMS>
 <MSVCREDIST>C:\pgbuild\vcredist_x86</MSVCREDIST>
* Compilar e instalar PostgreSQL (paso anterior)
* Actualizar los paquetes añadidos (pgAdmin, plDebugger, plJava, !StackBuilder)
* Iniciar el 'Símbolo del Sistema Visual Studio 2005':
 cd c:\pgBuild\BuildTrees\pginst-8.3
 msbuild /t:clean
 msbuild
== Solución de problemas: ==
* No puede cargar VCProjEngine.DLL: Copiar las dll localizadas (copy vcpackages\3082\*.dll vcpackages para español, en la carpeta de visual studio) (ver más)
* No se puede encontrar vjslib.dll: Instalar Visual J# Redistributable (ver más)
* 'windows.h': no such file or directory: Instalar el Microsoft Platform SDK y actualizar los paths en vsvars32.bat (en la carpeta common\bin del visual studio):
 @set PATH=...;%PATH%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Bin
 @set INCLUDE=...;%INCLUDE%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Include
 @set LIB=...;%LIB%;C:\Archivos de programa\Microsoft SDKs\Windows\v6.1\Lib
== Compilar PostgreSQL en Linux ==
=== Desde el cógido fuente ===
* Cuando se baja el código fuente desde mirrors y se descompacta en este caso está la versión 8.3.3 con:
 tar -xvzf postgresql-8.3.3.tar.gz
* Hay un detalle para poder compilar en Centos (compilador C, linker, librerías de desarrollo), Debian y Ubuntu hay que instalar antes el build-essential, y 2 librerias más libreadline5-dev zlib1g-dev): 
 apt-get install libreadline5-dev zlib1g-dev build-essential
Para Centos
 yum install bison gcc 
* En el fichero INSTALL vienen las siguientes especificaciones mediante las cuales podemos instalarlo desde los fuentes:
 ./configure
 gmake
 su
 gmake install
 adduser postgres --crea el usuario postgres
 mkdir /var/lib/pgsql/data --crea la carpeta de los datos
 chown postgres /var/lib/pgsql/data --otorga privilegios a postgres sobre los datos
 su - postgres
 /usr/local/pgsql/bin/initdb -D /var/lib/pgsql/data --inicializa el cluster
 /usr/local/pgsql/bin/postgres -D /var/lib/pgsql/data >logfile 2>&1 &
 /usr/local/pgsql/bin/createdb test -- crea base de datos de prueba
 /usr/local/pgsql/bin/psql test --abre la base de datos de prueba
 Es de notar que la base de datos puede estar en otro lado por ejemplo es aconsejable ponerla en /var en vez de en /usr esto cambiaría la línea 6, 7 , 9 y 10 que en vez de /usr sería /var .
* Se debe copiar el fichero para arrancar el servicio automático como superusuario
 cp contrib/start-scripts/linux /etc/init.d/postgresql
 chmod 710 /etc/init.d/postgresql
 update-rc.d postgresql start 45 S . start 20 1 2 3 . stop 30 4 5 .
 chkconfig postgresql on --para Centos
Category:Español