============================================================
Preguntas y respuestas Frecuentes (FAQ) para PostgreSQL
Plataforma Específica Sun Solaris
Para ser leída en cojunto con las instrucciones de instalación.
============================================================
Última modificación:        $Date: 2007/02/27 19:10:19 $
Traducción:		    $Date: 2008/10/28 12:17:00 $

Contenidos:

1) ¿Que herramientas necesito para compilar e instalar Postgresql en Solaris? 
2) ¿Porqué tengo problemas cuando compilo con el soporte OpenSSL?
3) ¿Porque cuando configuro se queja acerca de un testeo de programa fallido?
4) ¿Porque se corrompe a veces mi compilación en 64-bits?
5) ¿Cómo puedo compilar para el mejor rendimiento?
6) ¿De donde puedo descargar los paquetes preparados de Solaris?
7) ¿Como puedo afinar PostgreSQL y Solaris para el rendimiento?
8) ¿Puedo utilizar DTRace para tracear PostgreSQL?


1) ¿Que herramientas necesito para compilar e instalar Postgresql en Solaris??

Necesitarás:

	gzip (para instalar la documentación)
	GNU Make
	GNU Readline library (opcional)
	Sun Studio CC or GCC

Puede descargar Sun Studio desde: 
http://developers.sun.com/prodtech/cc/downloads/index.jsp

Muchas de las herramientas GNU están integradas en Solaris 10, o están presentes
en el CD que acompaña a Solaris.

Si quiere los paquetes de versiones antiguas, las puede encontrar en:

	http://www.sunfreeware.com or http://www.blastwave.org

Si prefiere los fuentes, mire aqui:

	http://www.gnu.org/order/ftp.html

Puede compilar tanto con GCC o la suite de compilación de Sun.
Para una mejor optimización de código, el compilador de Sun es el más
recomendado en arquitectura Sparc. Hemos tenido reportes de problemas
utilizando GCC 2.95.1; gcc 2.95.3 o más nuevo es recomendado.
Si está utilizando el compilador de Sun, tenga cuidado de no seleccionar 
/usr/ucb/cc; use /opt/SUNspro/bin/cc.


2) ¿Porqué tengo problemas cuando compilo con el soporte OpenSSL?

Cuando compila PostgreSQL con soporte OpenSSL deberá obtener los posibles
errores de compilación en los siguientes archivos:

	src/backend/libpq/crypt.c
	src/backend/libpq/password.c
	src/interfaces/libpq/fe-auth.c
	src/interfaces/libpq/fe-connect.c

Esto se debe a un conflicto de espacios de nombre (namespace) entre la 
cabecera estándar de /usr/include/crypt.h y la cabecera de los archivos
provistos por OpenSSL.

Actualizando la instalación de OpenSSL a la versión 0.9.6a, corregiría 
este problema.  Solaris 9 y anteriores tienen una versión de OpenSSL más reciente.


3) ¿Porque cuando configuro se queja acerca de un testeo de programa fallido?

Esto es un caso probablemente del enlazador (linker) de tiempo de ejecución
se vuelve inhabilitado para encontrar alguna biblioteca, probablemente libz,
libreadline o alguna otra biblioteca no estándar como libssl. Para colocarla en
la ubicación correcta, modifique la variable de entorno LDFLAGS, ej.:

	LDFLAGS="-R /usr/sfw/lib:/opt/sfw/lib:/usr/local/lib"
	export LDFLAGS

y reinicie el proceso de configuración. Vea la página de las man de ld(1) para 
más información.


4) ¿Porque se corrompe a veces mi compilación en 64-bits?

En Solaris 7 o anteriores, la versión 64-bits de libc tiene una rutina vsnprint
con errores, que lleva a un volcado del núcleo errático de PostgreSQL.
La manera más simple es forzando a PostgreSQL usar su propia versión de 
vnsprint en vez de la copia de la biblioteca. Para hacer esto, después de ejecutar
'configure', edite un archivo producido por 'configure':

En src/Makefile.global, cambie la linea

    LIBOBJS =

para leer

    LIBOBJS = snprintf.o

(Posiblemente puede haber otros archivos listados en esta variable. Las otras no son 
un problema.)

Reconstruir como lo hace usualmente.


5) ¿Cómo puedo compilar para el mejor rendimiento?

En la arquitectura SPARC, es recomendado Sun Studio para la compilación.
Intente usar la bandera -x05 para generar binarios más veloces.  
No utilice ninguna bandera que modifique el comportamiento de las operaciones
de coma flotante y procesamiento de errno (Ej: -fast). Estas banderas pueden 
provocar un comportamiento no estándar de PostgreSQL como por ejempĺo el cómputo
de el formato date/time.

Si no tiene una razón para utilizar los binarios de 64-bit en SPARC, utilice 
los binarios de la versión de 32-bits. Las operaciones de 64-bits son más lentas 
y los binarios de 64-bits son más lentos que la variante de 32-bit. Por otra parte,
el código 32-bit en la familiar de CPU AMD64 no es nativo, y es por eso que el 
código de 32-bit es significativamente más lento en esta familia de CPU.
 


6) ¿De donde puedo descargar los paquetes preparados de Solaris?

PostgreSQL viene incluido con Solaris 10 (para la actualización 2). Los
paquetes oficiales están disponibles en 
<http://pgfoundry.org/projects/solarispackages/>.  Los paquetes para versiones
más antiguas de Solaris (versiones 8, 9) peuden ser obtenidas de
<http://www.sunfreeware.com/> or <http://www.blastwave.org/>.


7) ¿Como puedo afinar PostgreSQL y Solaris para el rendimiento?

Algunos trucos pueden encontrarse aqui:

	http://www.sun.com/servers/coolthreads/tnb/applications_postgresql.jsp

Este artículo está planteado en una plataforma T2000, pero muchas de las recomendaciones
pueden ser útiles en otro hardware con Solaris.

8) ¿Puedo utilizar DTRace para tracear PostgreSQL?

Si, vea el capítulo "Monitoreando la Actividad de la Base de Datos" (Monitoring Database 
Activity) en la documentación para más detalles.

Puede encontrar aún más información aquí:

	http://blogs.sun.com/robertlor/entry/user_level_dtrace_probes_in

Si observa el enlace del ejecutable de postgres que aborta con un mensage de 
error como este:

	Undefined                       first referenced
	 symbol                             in file
	AbortTransaction                    utils/probes.o
	CommitTransaction                   utils/probes.o
	ld: fatal: Symbol referencing errors. No output written to postgres
	collect2: ld returned 1 exit status
	gmake: *** [postgres] Error 1

su instalación de DTrace es muy vieja para manejar 'probes' en funciones 
estáticas. Necesitará Solaris 10v4 o más nueva. Una forma de solucionarlo es 
removiendo la palabra clave de la declaración  de las funciones AbortTransaction 
y CommitTransaction en src/backend/access/transam/xact.c.

Vea http://sunsolve.sun.com/search/document.do?assetkey=1-1-2139224-1
(Registración requerida).

