Compilación de PostgreSQL y pgInstaller en Windows

From PostgreSQL wiki
Jump to navigationJump to search

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:

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