En Solaris pueden experimentarse problemas aún antes de lograr descomprimir la distribución de MySQL, ya que tar no puede manejar nombres de fichero largos en Solaris. Esto significa que pueden verse errores cuando se intente expandir MySQL.
Si esto ocurre, habrá que emplear el GNU tar (gtar) para expandir la distribución. Se puede hallar una copia precompilada para Solaris en http://dev.mysql.com/downloads/os-solaris.html.
Los procesos nativos de Sun solamente funcionan en Solaris 2.5 y posteriores. Para la versión 2.4 y anteriores, MySQL utilizará MIT-pthreads automáticamente. Consulte Sección 2.8.5, “Notas sobre MIT-pthreads”.
Si se obtienen el siguiente error en configure, significa que algo falló en la instalación del compilador:
checking for restartable system calls... configure: error can not run test programs while cross compiling
        En este caso se debería actualizar a una versión más reciente
        del compilador. También podría resolverse este problema
        insertando la siguiente línea en el fichero
        config.cache:
      
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
Si se esta empleando Solaris en una SPARC, el compilador recomendado es gcc 2.95.2 o 3.2. Se lo puede descargar de http://gcc.gnu.org/. Hay que notar que egcs 1.1.1 y gcc 2.8.1 no funcionan confiablemente en SPARC.
La línea recomendada en configure al utilizar gcc 2.95.2 es:
CC=gcc CFLAGS="-O3" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory \
    --enable-assembler
        Si se tiene un sistema UltraSPARC, se puede mejorar el
        rendimiento en un 4% agregando -mcpu=v8
        -Wa,-xarch=v8plusa a las variables de entorno
        CFLAGS y CXXFLAGS.
      
Si se tiene el compilador Forte 5.0 (o posterior) de Sun, se puede ejecutar configure de esta manera:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Para crear un binario de 64 bits con el compilador Forte de Sun, deben utilizarse las siguientes opciones de configuración:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \ CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \ ./configure --prefix=/usr/local/mysql --enable-assembler
        Para crear un binario de 64 bits para Solarios utilizando
        gcc, debe agregarse -m64 a
        CFLAGS y CXXFLAGS y quitar
        --enable-assembler de la linea de
        configure.
      
        En las pruebas de rendimiento MySQL, se obtuvo un incremento del
        4% en la velocidad en una UltraSPARC cuando se utilizó Forte
        5.0 en modo de 32 bits, comparado con gcc 3.2
        con el flag -mcpu.
      
Si se crea un binario mysqld de 64 bits, es un 4% más lento que el binario de 32 bits, pero puede manejar más subprocesos y memoria.
        Al utilizar Solaris 10 para x86_64, cualquier sistema de
        ficheros (filesystem) donde se deseen almacenar ficheros InnoDB
        debería ser montado con la opción
        forcedirectio. (Por defecto, el montaje se
        realiza sin esta opción) Si no se hace de este modo, el
        rendimiento caerá significativamente al usar el motor de
        almacenamiento InnoDB en dicha plataforma.
      
        Si se tienen problemas con fdatasync o
        sched_yield, se podrán solucionar agregando
        LIBS=-lrt en la línea de
        configure.
      
Para compiladores anteriores a WorkShop 5.3, se podría tener que editar el script configure, cambiando esta línea:
#if !defined(__STDC__) || __STDC__ != 1
Poniendo esta en su lugar:
#if !defined(__STDC__)
        Si se inicia __STDC__ con la opción
        -Xc, el compilador de Sun no podrá compilar
        con el fichero de cabecera pthread.h de
        Solaris. Esto es un error de Sun (en el compilador o en el
        fichero).
      
        Si mysqld emite el siguiente mensaje de error
        cuando se lo ejecuta, es porque se lo ha compilado con el
        compilador de Sun sin habilitar la opción de multihilo
        -mt:
      
libc internal error: _rmutex_unlock: rmutex not held
        Agregar -mt a CFLAGS y
        CXXFLAGS y recompilar.
      
        Si se está utilizando la versión SFW de gcc
        (que viene con Solaris 8), se debe agregar
        /opt/sfw/lib a la variable de entorno
        LD_LIBRARY_PATH antes de ejecutar
        configure.
      
        Si se está empleando el gcc disponible en
        sunfreeware.com, pueden tenerse muchos
        problemas. Para evitarlo, se debería recompilar
        gcc y GNU binutils en el
        ordenador donde se los ejecutará.
      
Si se obtiene el siguiente mensaje de error al compilar MySQL con gcc, significa que gcc no está configurado para la versión en uso de Solaris:
shell> gcc -O3 -g -O2 -DDBUG_OFF -o thr_alarm ... ./thr_alarm.c: In function `signal_hand': ./thr_alarm.c:556: too many arguments to function `sigwait'
Lo más apropiado para hacer en este caso es conseguir la versión más nueva de gcc y compilarlo con el gcc que se tiene. Al menos en Solaris 2.5, casi todas las versiones binarias de gcc tienen ficheros de cabecera antiguos e inutilizables que hacen caer a todos los programas que usan subprocesos y posiblemente también a otros programas.
        Solaris no provee versiones estáticas de todas las bibliotecas
        del sistema (libpthreads y
        libdl), de modo que no se puede compilar
        MySQL con --static. Si se intenta hacer tal
        cosa, se obtendrá uno de los siguientes errores:
      
ld: fatal: library -ldl: not found undefined reference to `dlopen' cannot find -lrt
Si se enlaza con los programas cliente MySQL del usuario, se puede ver el siguiente error en tiempo de ejecución:
ld.so.1: fatal: libmysqlclient.so.#: open failed: No such file or directory
Este problema puede evitarse por medio de alguno de estos métodos:
        Si ocurren problemas con configure al
        intentar enlazar con -lz cuando no se tiene
        instalado zlib, hay dos opciones:
      
            Si se desea tener la capacidad de usar el protocolo de
            comunicación comprimido, se deberá conseguir
            zlib desde ftp.gnu.org
            e instalarlo.
          
            Ejecutar configure con la opción
            --with-named-z-libs=no cuando se compile
            MySQL.
          
        Si se está utilizando gcc y se tienen
        problemas con la carga de funciones definidas por el usuario
        (UDFs) en MySQL, hay que intentar agregar
        -lgcc a la línea donde se enlaza la UDF.
      
        Si se desea que MySQL inicie automáticamente, se debe copiar
        support-files/mysql.server a
        /etc/init.d y crear un vínculo simbólico
        hacia él, llamado
        /etc/rc3.d/S99mysql.server.
      
Si demasiados procesos intentan conectarse muy rápidamente a mysqld, se verá este error en el log de MySQL:
Error in accept: Protocol error
        Se puede intentar iniciar el servidor con la opción
        --back_log=50 como una forma de solución.
        (Utilizar -O back_log=50 en versiones
        anteriores a MySQL 4).
      
        Solaris no soporta ficheros de núcleo para aplicaciones
        setuid(), de forma que no se logrará un
        fichero de núcleo a partir de mysqld si se
        está empleando la opción --user.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

