:: DEVELOPER ZONE
No Solaris, você deve ter problemas mesmo antes de descompactar a distribuição
MySQL! O tar do Solaris não pode tratar grandes nomes de arquivos,
portanto você pode ver um erro deste tipo quando descompactar o MySQL:
x mysql-3.22.12-beta/bench/Results/ATIS-mysql_odbc-NT_4.0-cmp-db2,informix,ms-sql,mysql,oracle,solid,sybase, 0 bytes, 0 tape blocks tar: directory checksum error
Neste caso, você deve usar o GNU tar (gtar) para desempacotar
a distribuição. Você pode encontrar uma cópia pré-compilada para Solaris
em http://www.mysql.com/downloads/os-solaris.html.
As threads nativas da Sun funcionam somente no Solaris 2.5 e superior. Para a versão 2.4 e anteriores, o MySQL irá automaticamente usar MIT-pthreads. See Secção 2.3.6, “Notas MIT-pthreads”.
Se você obter o seguinte erro de configure:
checking for restartable system calls... configure: error can not run test programs while cross compiling
Isto significa que alguma coisa está errada com a instalação de seu compilador!
Neste caso você deve atualizar seu compilador para uma versão mais nova.
Você também pode resolver este problema inserindo a seguinte
linha no arquivo config.cache:
ac_cv_sys_restartable_syscalls=${ac_cv_sys_restartable_syscalls='no'}
Se você está usando Solaris em um SPARC, o compilador recomendado é o
gcc 2.95.2. Você pode encontrá-lo em http://gcc.gnu.org/.
Perceba que egcs 1.1.1 e gcc 2.8.1 não são estáveis
no SPARC!
A linha do configure recomendado quando usando gcc 2.95.2 é:
CC=gcc CFLAGS="-O3" \ CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory --enable-assembler
Se você possui um ultra sparc, você pode obter 4% a mais de performance adicionando "-mcpu=v8 -Wa,-xarch=v8plusa" para a CFLAGS e CXXFLAGS.
Se você possui o compilador Sun Workshop (Fortre) 5.3 (ou mais novo),
você pode executar configure da seguinte forma:
CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \ CXX=CC CXXFLAGS="-noex -mt" \ ./configure --prefix=/usr/local/mysql --enable-assembler
Você pode criar um binário de 64 bits usando o compilador Forte da Sun com os seguintes parâmetros de compilação:
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 criar um binário de 64 bits do Solaris usando gcc, e -m64
para CFLAGS e CXXFLAGS. Note que isto só funciona com o MySQL
4.0 e acima - o MySQL 3.23 não inclui as modificações exigidas para suportar
isto.
No benchmark do MySQL, conseguimos um aumento de velocidade de 4% em um UltraSPARC usando o Forte 5.0 no modo 32 bit em comparação com o uso do gcc 3.2 com o parametro -mcpu.
Se você criar um binário de 64 bits, ele será 4$ mais lento que o binário de
32 bits, mas o mysqld poderá tratar mais threads e memória.
Se você tiver um problema com fdatasync ou sched_yield, você
pode corrigir isto adicionando LIBS=-lrt para a linha de configuração
O seguinte paragráfo é relevante somente para compiladores mais antigos que o WorkShop 5.3:
Você também pode ter que editar o script configure para alterar esta linha:
#if !defined(__STDC__) || __STDC__ != 1
para isto:
#if !defined(__STDC__)
Se você ligar __STDC__ com a opção -Xc, o compilador Sun não pode
compilar com o arquivo de cabeçalho pthread.h do Solaris. Isto é um bug
da Sun (compilador corrompido ou arquivo include corrompido).
Se o mysqld emitir a mensagem de erro mostrada abaixo quando você
executá-lo, você deve tentar compilar o MySQL com o compilador Sun sem habilitar
a opção multi-thread (-mt):
libc internal error: _rmutex_unlock: rmutex not held
Adicione -mt a CFLAGS e CXXFLAGS e tente novamente.
Se você estiver usando a versão SFW do gcc (que vem com o Solaris 8),
você deve adicionar /opt/sfw/lib a variável de ambiente
LD_LIBRARY_PATH antes de executar a configuração.
Se você estiver usando o gcc disponível em sunfreeware.com, você pode
ter muitos problemas. Você deve recompilar o gcc e GNU binutils na máquina
que você o executará para evitar qualquer problema.
Se você obter o seguinte erro quando estiver compilando o MySQL com gcc,
significa que seu gcc não está configurado para sua versão 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'
A coisa apropriada para fazer neste caso é obter a versão mais nova do gcc
e compilá-lo com seu compilador gcc atual! Ao menos para o Solaris 2.5,
a maioria das versões binárias de gcc tem arquivos inúteis e antigos
que irão quebrar todos programas que usam threads (e possivelmente outros
programas)!
O Solaris não fornece versões estáticas de todas bibliotecas de sistema
(libpthreads) e libdl), portanto você não pode compilar o
MySQL com --static. Se você tentar fazer isto, receberá o erro:
ld: fatal: library -ldl: not found ou undefined reference to `dlopen' ou cannot find -lrt
Se vários processos tentar conectar muito rapidamente ao mysqld, você
verá este erro no log do MySQL:
Error in accept: Protocol error
Você deve tentar iniciar o servidor com a opção --set-variable back_log=50
como uma solução para esta situação.
Note que --set-variable=nome=valor e -O nome=valor está
obsoleto desde o MySQL 4.0. Use apenas --back_log=50.
See Secção 4.1.1, “Opções de Linha de Comando do mysqld”.
Se você está ligando seu próprio cliente MySQL, você deve obter o seguinte erro quando tentar executá-lo:
ld.so.1: ./my: fatal: libmysqlclient.so.#: open failed: No such file or directory
O problema pode ser evitado por um dos seguintes métodos:
Se você tiver problemas com o configure tentando ligar com -lz e
você não tem a zlib instalada, você terá duas opções:
Se você deseja usar o protocol de comunição de compactado você precisará obter e instalar a zlib from ftp.gnu.org.
Configure com --with-named-z-libs=no.
Se você estiver usando o gcc e tiver problemas carregando funções UDF
no MySQL, tente adicionar -lgcc para a linha de ligação para a função
UDF.
Se você deseja que o MySQL inicie automaticamente, você pode copiar
support-files/mysql.server para /etc/init.d e criar um link
simbólico para ele, chamado /etc/rc.3.d/S99mysql.server.
Como o Solaris não suporta core files para aplicações setuid(),
você não pode obter um core file do mysqld se você estiver usando a
opção --user.
© 1995-2005 MySQL AB. All rights reserved.
