Antes de você continuar com as instalações dos fontes, confira antes se nosso binário está disponível para sua plataforma e se ela funcionará para você. Nós colocamos muito esforço para ter certeza que nossos binários são contruídos com as melhores opções possíveis.
Você precisa das seguintes ferramentas para contruir e instalar o MySQL a partir do código fonte:
GNU
gunzippara descompactar a distribuição.Um
tarrazoável para desempacotar a distribuição. Sabe-se que o GNUtarfunciona. Algumas implementaçõestarque vêm pré-instaladas como o sistema operacional (ex. Suntar) possuem problemas (com nome de arquivos grandes, por exemplo) Neste caso, você deve instalar o GNUtarprimeiro.Um compilador ANSI C++ funcional.
gcc>= 2.95.2,egcs>= 1.0.2 ouegcs 2.91.66, SGI C++, e SunPro C++ são alguns dos compiladores que sabemos que funcionam. Alibg++não é necessária quando ogccfor usado.gcc2.7.x tem um bug que torna impossível compilar alguns arquivos C++ perfeitamente corretos, como osql/sql_base.cc. Se você possui somente ogcc2.7.x você deve atualiza-lo para conseguir compilar o MySQL.gcc2.8.1 é também conhecido por ter problemas em algumas plataformas portanto ele deve ser evitado se existir um novo compilador para a plataforma.gcc>= 2.95.2 é recomendado quando compilar o MySQL Versão 3.23.x.Um bom programa
make. GNUmakeé sempre recomendado e é algumas vezes necessário. Se você tiver problemas, recomendamos tentar o GNUmake3.75 ou mais novo.
Se você estiver usando uma versão recente de
gcc, recente o bastante para
entender a opção -fno-exceptions, é
MUITO IMPORTANTE que você a use.
De outra forma, você pode compilar um binário que quebra
randomicamente. Nós também recomendamos que você use
-felide-constructors e
-fno-rtti juntas com
-fno-exception. Se estiver com dúvidas, faça
o seguinte:
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions \ -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Na maioria dos sistemas você irá obter um binário rápido e estável com essas opções.
Se você tiver problemas, SEMPRE USE
mysqlbug quando postar questões
para a lista de email do MySQL Mesmo se o problema não for um
bug, mysqlbug recolhe informações do sistema
que facilitará aos outros resolverem seu problema. Por não suar
mysqlbug, você perde a vantagem de ter seu
problema resolvido! Você irá encontrar
mysqlbug no diretório
scripts depois de desempacotar a
distribuição. See Secção 1.7.1.3, “Como relatar erros ou problemas”.
Os comandos básicos que você deve executar para instalar o MysQL a partir da distribuição fonte são:
shell>groupadd mysqlshell>useradd -g mysql mysqlshell>gunzip < mysql-VERSION.tar.gz | tar -xvf -shell>cd mysql-VERSIONshell>./configure --prefix=/usr/local/mysqlshell>makeshell>make installshell>scripts/mysql_install_dbshell>chown -R root /usr/local/mysqlshell>chown -R mysql /usr/local/mysql/varshell>chgrp -R mysql /usr/local/mysqlshell>cp support-files/my-medium.cnf /etc/my.cnfshell>/usr/local/mysql/bin/mysqld_safe --user=mysql &
Se a sua versão do MySQL é mais antiga que a 4.0, substitua
bin/safe_mysqld por
bin/mysqld_safe no comando final.
Se você deseja ter suporte para tabelas InnoDB, você deve
editar o arquivo /etc/my.cnf e remover o
caractere # antes dos parâmetros que iniciam
com innodb_.... See
Secção 4.1.2, “Arquivo de Opções my.cnf”. See
Secção 7.5.3, “Opções de Inicialização do InnoDB”.
Se você iniciar de um RPM fonte, então faça o seguinte:
shell> rpm --rebuild --clean MySQL-VERSION.src.rpm
Isto irá criar um RPM binário que você pode instalar.
Você pode adicionar novos utilizadores utilizando o script
bin/mysql_setpermission se você instalar os
módulos Perl DBI e
DBD-mysql.
Segue uma descrição mais detalhada.
Para instalar uma distribuição fonte, siga os passos a seguir, então prossiga para Secção 2.4, “Configurações e Testes Pós-instalação”, para inicialização do pós-instalação e testes:
Escolha o diretório sobre o qual você deseja descompactar a distribuição e vá para ele.
Obtenha um arquivo de distribuição de algum dos sites listados em Secção 2.2.1, “Como obter o MySQL”.
Se você esta interessado em usar tabelas Berkeley DB com MySQL, você precisará obter uma versão com o patch do código fonte do Berkeley DB. Por favor leia o capítulo sobre tabelas Berkeley DB antes de continuar. See Secção 7.6, “Tabelas
BDBouBerkeleyDB”.Distribuições fontes do MySQL são fornecidas como arquivos
tarcompactados e tem nomes comomysql-VERSION.tar.gz, ondeVERSIONé um número como 5.0.6-beta.Adicione um utilizador e grupo para o
mysqlexecutar assim:shell>
groupadd mysqlshell>useradd -g mysql mysqlEstes comandos adicionam o grupo
mysqle o utilizadormysql. A sintaxe parauseraddegroupaddpodem mudar um pouco em diferentes versões de Unix. Elas podem também ser chamadasaddusereaddgroup. Você pode escolher outros nomes para o utilizador e grupo em vez demysql.Descompacte a distribuição para o diretório corrente:
shell>
gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -Este comando cria um diretório com o nome
mysql-VERSION.Mude para o diretório da distribuição descompactada:
shell>
cd mysql-VERSIONNote que agora você deve configurar e construir o MySQL a partir deste diretório raiz da distribuição. Você não pode construí-lo em um diretório diferente.
Configure o release e compile tudo:
shell>
./configure --prefix=/usr/local/mysqlshell>makeQuando você executar
configure, você pode desejar especificar algumas opções. Execute./configure --helppara uma lista das opções. Secção 2.3.3, “Opções típicas doconfigure”, discute algumas das opções mais usadas.Se o
configurefalhar, e você for enviar uma mensagem para lista de email do MySQL para pedir ajuda, por favor, inclua qualquer linhas deconfig.logque você acha que pode ajudar a resolver o problema. Também inclua as últimas linhas da saída deconfigurese oconfigureabortar. Envie o relatório de erros usando o scriptmysqlbug. See Secção 1.7.1.3, “Como relatar erros ou problemas”.Se a compilação falhar, veja Secção 2.3.5, “Lidando com Problemas de Compilação”, para uma ajuda com um varios problemas comuns.
Instalar tudo:
shell>
make installVocê deve executar este comando como
root.Crie as tabelas de permissões do MySQL (necessárias só se você não tiver instalado o MySQL anteriormente):
shell>
scripts/mysql_install_dbNote que as versões do MySQL anteriores à versão 3.22.10 iniciam o servidor MySQL quando você executa
mysql_install_db. Isto não acontece mais!Altere o dono dos binários para
roote do diretório dados para o utilizador que irá executar omysqld:shell>
chown -R root /usr/local/mysqlshell>chown -R mysql /usr/local/mysql/varshell>chgrp -R mysql /usr/local/mysqlO primeiro comando altera o atributo de
proriedadedos arquivos para o utilizadorroot, o segundo altera o atributo depropriedadedo diretório de dados para o utilizadormysql, e o terceiro altera o atributo degrupopara o grupomysql.Se você deseja instalar suporte para a interface Perl
DBI/DBD, veja Secção 2.7, “Comentários de Instalação do Perl”.Se você deseja que o MySQL inicie automaticamente quando você ligar sua máquina, você pode copiar
support-files/mysql.serverpara o local onde seu sistema tem seus arquivos de incialização. Mais informações podem ser encontradas no próprio scriptsupport-files/mysql.servere em Secção 2.4.3, “Inicializando e parando o MySQL automaticamente.”.
Depois de tudo ter sido instalado, você deve iniciar e testar sua distribuição usando este comando:
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
Se a sua versão do MySQL for mais antiga do que 4.0, substitua
safe_mysqld por
mysqld_safe no comando:
Se o comando falhar imediatamente com mysqld daemon
ended então você pode achar alguma informação no
arquivo
diretório-dados-mysql/'nome_maquina'.err.
A razão pode ser que você já possua outro servidor
mysqld sendo executado. See
Secção 4.2, “Executando Múltiplos MySQL Servers na Mesma Máquina”.
Algumas vezes patches aparecem na lista de mensagens ou são colocados na área de patches do MySQL. (http://www.mysql.com/downloads/patches.html).
Para aplicar um patch da lista de mensagens, salve a mensagem em que o patch aparece em um arquivo, mude para o diretório raiz da sua distribuição fonte de seu MySQL e execute estes comandos:
shell>patch -p1 < patch-file-nameshell>rm config.cacheshell>make clean
Patches do site FTP são distribuídos como arquivos texto ou
como arquivos compactados com gzip. Aplique
um patch no formato texto como mostrado acima para patches da
lista de mensagens. Para aplicar um patch compactado, mude para
o diretório raiz da árvore fonte do MySQL e execute estes
comandos:
shell>gunzip < patch-file-name.gz | patch -p1shell>rm config.cacheshell>make clean
Depois de aplicar um patch siga as instruções para uma
instalação normal a partir dos fontes começando com o passo
./configure. Depois de executar o passo
make install, reinicie seu servidor MySQL.
Você pode precisar derrubar algum servidor atualmente em
execução antes de executar make install.
(Use mysqladmin shutdown para fazer isto.)
Alguns sistemas não lhe permitem instalar uma nova versão do
programa se ele substitui agum que estiver em execução.
O script configure fornece uma grande gama de
controle sobre como você configura sua distribuição MySQL.
Normalmente você faz isto usando opções na linha de comando
do configure. Você também pode alterar
configure usando algumas variáveis de
ambiente. See Apêndice F, Variáveis de Ambientes do MySQL. Para uma
lista de opções suportadas pelo configure,
execute este comando:
shell> ./configure --help
Algumas das opções mais usadas normalmente com o
configure estão descritas a seguir:
Para compilar apenas as bibliotecas clientes do MySQL e programas clientes e não o servidor, use a opção
--without-server:shell>
./configure --without-serverSe você não possui um compilador C++,
mysqlnão irá compilar (ele é o programa cliente que exige C++). Neste caso, você pode remover o código noconfigureque testa pelo compilador C++ e executar./configurecom a opção--without-server. O passo da compiação continuará tentaindo construirmysql, mas você pode ignorar as advertências sobremysql.cc. (Se omakeparar, tentemake -kpara continuar com o resto da compilação mesmo se erros ocorrerem.)Se você quiser uma biblioteca embutida do MySQL (
libmysqld.a) você deve usar a opção--with-embedded-server.Se você não deseja que seus arquivos de logs e diretórios de bancos de dados fiquem localizados sobre
/usr/local/var, use o comandoconfigure; algo parecido com um destes:shell>
./configure --prefix=/usr/local/mysqlshell>./configure --prefix=/usr/local \--localstatedir=/usr/local/mysql/dataO primeiro comando altera o diretório instalação para que tudo seja instalado sobre
/usr/local/mysqlem vez do padrão/usr/local. O segundo comando preserva o diretório da instalação padrão, mas altera a localização padrão para diretórios de bancos de dados (normalmente/usr/local/var) e altera para/usr/local/mysql/data. Depois de ter compilado o MySQL, você pode alterar estas opçãoes com arquivos de opções. See Secção 4.1.2, “Arquivo de Opçõesmy.cnf”.Se você estiver usando Unix e deseja que o arquivo socket do MySQL fique em um diretório diferente do padrão (normalmente no diretório
/tmpou/var/run) use o comandoconfigureda seguinte forma:shell>
./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sockPerceba que o arquivo fornecido deve ter um caminho absoluto ! Você também pode, mais tarde, alterar a localização de
mysql.sockusando os arquivos de opções do MySQL. See Secção A.4.5, “Como Proteger ou AlterarHow to Protect or Change the MySQL Socket File/tmp/mysql.sock”.Se você deseja compilar programas linkeditados estaticamente (por exemplo, para criar uma distribuição binária, obter mais velocidade, ou evitar problemas com algumas distribuições Red Hat Linux), execute
configuredesta forma:shell>
./configure --with-client-ldflags=-all-static \--with-mysqld-ldflags=-all-staticSe você estiver usando
gcce não temlibg++oulibstdc++instalados você pode dizer aoconfigurepara usar ogcccomo seu compilador C++:shell>
CC=gcc CXX=gcc ./configureQuando você usar
comoseu compilador C++, ele não tentará ligar com olibg++oulibstdc++. Isto pode ser uma boa idéia para se fazer se você tiver as bibliotecas acimas instaladas, já que algumas versões destas bibliotecas tem causado problemas estranhos para utilizadores do MySQL no passado.Segue algumas configurações de variáveis de ambiente comuns, dependendo do compilador que você estiver usando:
Compiler Recommended options gcc 2.7.2.1 CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors" egcs 1.0.3a CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" gcc 2.95.2 CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" pgcc 2.90.29 or newer CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \ CXXFLAGS="-O3 -mpentiumpro -mstack-align-double -felide-constructors \ -fno-exceptions -fno-rtti" Na maioria dos casos você pode obter um binário MySQL razoavelmente otimizado usando as opções acima e adicionar as seguintes opções para a linha de configuração:
--prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
A linha completa de configuração deverá ser, em outras palavras, algo como o seguinte para todas as versões recentes do gcc:
CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti" ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static
Os binários que fornecemos no site Web MySQL em http://www.mysql.com são todos compilados com otimização plena e deve ser perfeito para a maioria dos utilizadores. See Secção 2.2.8, “Binários MySQL compilados pela MySQL AB”. Existem algumas definições de configuração que você pode alterar para criar um binário ainda mais rápido, mas isto é somente para utilizadores avançados. See Secção 5.5.3, “Como a Compilação e a Ligação Afetam a Velocidade do MySQL”.
Se a construção falhar e produzir erros sobre seu compilador ou linkeditor não estarem aptos para criarem a biblioteca compartilhada
libmysqlclient.so.r#('r#' é um número de versão), você pode evitar este problema fornecendo a opção--disable-sharepara oconfigure. Neste caso,configurenão construirá uma bibliotecalibmysqlclient.so.*compartilhada.Você pode configurar o MySQL para não usar valores de campos
DEFAULTpara campos não-NULL(isto é, campos que não podem serNULL). See Secção 1.8.5.2, “Restrições deNOT NULL”.shell>
CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configurePor padrão, o MySQL usa o conjunto de caracteres ISO-8859-1 (Latin1). Para alterar o conjunto padrão, use a opção
--with-charset:shell>
./configure --with-charset=CHARSETCHARSETpode ser um debig5,cp1251,cp1257,czech,danish,dec8,dos,euc_kr,gb2312,gbk,german1,hebrew,hp8,hungarian,koi8_ru,koi8_ukr,latin1,latin2,sjis,swe7,tis620,ujis,usa7, ouwin1251ukr. See Secção 4.7.1, “O Conjunto de Caracteres Utilizado para Dados e Ordenação”.Se você desja converter os caracteres entre o servidor e o cliente, você deve dar uma olhada no comando
SET OPTION CHARACTER SET. See Secção 5.5.6, “Sintaxe deSET”.Cuidado: Se você alterar o conjunto de caracteres depois de ter criado qualquer tabela, você deve executar
myisamchk -r -q --set-character--set=charsetem cada tabela. Seus índices podem ser ordenados incorretamente. (Isto pode acontecer se você instalar o MySQL, criar algumas tabelas, depois reconfigurar o MySQL para usar um conjunto diferente de caracteres e reinstalá-lo).Com a opção
--with-extra-charset=LISTAvocê pode definir qual conjunto de caracteres adicionais deve ser compilado no servidor.Aqui
LISTAé uma lista de conjuntos de caracteres separados por espaços,complexpara incluir todos caracteres que não podem ser carregados dinamicamente ouallpara incluir todos os conjuntos nos binários.Para configurar o MySQL com código para depuração, use a opção
--with-debug:shell>
./configure --with-debugIsto inclui uma alocação segura de memória que pode encontrar alguns erros e fornecer saída sobre o que está acontecendo. See Secção E.1, “Depurando um Servidor MySQL”.
Se seus programas clientes usam threads, você precisará também compilar uma versão thread-safe da biblioteca cliente do MySQL com as opções do configure
--enable-thread-safe-client. Isto irá criar uma bibliotecalibmysqlclient_rcom o qual você deverá ligar suas aplicações que fazem uso de threads. See Secção 12.1.14, “Como Fazer um Cliente em Threads”.Opções que pertençam a sistemas particulares podem ser encontrados na seção com detalhes específicos de sistemas neste manual. See Secção 2.6, “Notas específicas para os Sistemas Operacionais”.
CUIDADO: Você deve ler esta seção somente se você estiver interessado em nos ajudar a testar nossos novos códigos. Se você só deseja deixar o MySQL funcionando em seus sistema, você deve usar uma distribuição padrão (pode ser uma distribuição binária ou fonte).
Para obter noss mais nova árvore de desenvolvimento, use estas instruções:
Faça download do BitKeeper em http://www.bitmover.com/cgi-bin/download.cgi. Você precisará do Bitkeeper 3.0 ou posterior para acessar nosso repositório.
Siga as instruções para instalá-lo.
Depois que o BitKeeper estiver instalado, primeiro vá ao diretório no qual você deseja trabalhar e então use um dos seguintes comandos para clonar o ramo da versão MySQL de sua escolha:
Para clonar o ramo 3.23 (antigo), use este comando:
shell>
bk clone bk://mysql.bkbits.net/mysql-3.23 mysql-3.23Para clonar o ramo 4.0 (estável/produção), use este comando:
shell>
bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0Para clonar o ramo 4.1 alfa, use este comando:
shell>
bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1Para clonar o ramo de desenvolvimento 5.0, use este comando:
shell>
bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0Nos exemplos anteriores a árvore binária será configurada no subdiretório
mysql-3.23/,mysql-4.0/,mysql-4.1/, oumysql-5.0/do diretório atual.Se você está atrás de um firewall e só pode iniciar conexões HTTP, você também pode o
BitKeepervia HTTP.Se vocÊ precisa usar um servidor proxy, simplesmente configure a variável de ambiente
http_proxypara apontar para o seu proxy:shell>
export http_proxy="http://seu.servidor.proxy:8080/"Agora, simplesmente substitua o
bk://com ohttp://ao fazer um clone. Exemplo:shell>
bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1O download inicial da árvore fonte pode demorar um pouco, dependendo da velocidade de sua conexão; seja paciente.
Você precisará do GNU
make,autoconf 2.53 (ou posterior),automake 1.5,libtool 1.4em4para executar o próximo conjunto de comandos. Embora muitos sistemas operacionais já venham com suas próprias implementações domake, as chances de que a sua compilação falhe com mensagens de erros estranhas são altas. Consequentemente é altamente recomendado usar o GNUmake(algumas vezes também chamadogmake).Felizmente, um grande número de sistemas operacionais já vem com a ferramente GNU pré instalada ou são fornecidos pacotes de instalação da mesma. De qualquer forma, elas podem ser encontradas nos seguintes locais:
Se você estiver tentando configurar o MySQL 4.1 você também precisará do
bison 1.75. Versões mais antigas dobisonpodem exiobir este erro:sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded. Nota: o tamanho máximo da tabela não é realmente excedido, o erro é causado por um bug nas versões mais novas dobison.Versões do MySQL anteriores a 4.1 podem também compilar com outras implementações
yacc(e.g. BSDyacc91.7.30). Para versões posteriores, GNUbisoné uma exigência.O comando comum para fazer em uma shell é:
cd mysql-4.0 bk -r edit aclocal; autoheader; autoconf; automake (cd innobase; aclocal; autoheader; autoconf; automake) # for InnoDB (cd bdb/dist; sh s_all ) # for Berkeley DB ./configure # Adicione suas opções favoritas aqui make
Caso apareçam alguns erros estranhos durantes este estágio, confira se você realmente tem a
libtoolinstalada!Uma coleção de nossos scripts de configuração padrões está localizada no subdiretório
BUILD/. Se preferir, você pode usarBUILD/compile-pentium-debug. Para compilar em uma arquitetura diferente, modifique o script removendo opções que são específicas da arquitetura Pentium.Quando a construção estiver pronta, execute
make install. Seja cuidadoso com isto em uma máquina de produção; o comando pode sobrescrever sua versão atual instalada. Se você tem outra instalação do MySQL, nós recomendamos que você execute./configurecom valores diferentes para as opçõesprefix,tcp-porteunix-socket-pathque as usadas pelo seu servidor em produção.Seja rígido com sua nova instalação e tente fazer com que os novos recursos falhem. Inicie executando
make test. See Secção 14.1.2, “Pacotes de Teste do MySQL”.Se você chegar ao estágio
makee a distribuição não compilar, por favor relate-o para<bugs@lists.mysql.com>. Se você instalou as últimas versões das ferramentas GNU exigidas, e elas falharam tentando processar nossos arquivos de configuração, por favor informe isto também. Entretanto, se você executaraclocale obtêm um erro decommand not foundnão o reporte.Tenha certeza que todas as ferramentas necessárias estejam instaladas e que sua variávelPATHesteja corretamente configurada para que sua shell possa encontrá-la.Depois da operação inicial
bk clonepara obter a árvore fonte, você deve executarbk pullperiodicamente para obter as atualizações.Você pode examinar o histórico de alterações para a árvore com todos os diffs usando
bk sccstool. Se você ver alguns diffs estranhos ou código sobre o qual você tenha alguma dúvida, não hesite em enviar um e-mail para lista de email ``internals'' do MySQL. See Secção 1.7.1.1, “As Listas de Discussão do MySQL”. Além disso, se você acha que tem uma idéia melhor em como fazer algo, envie um email para o mesmo endereço com um patch.bk diffsirá produzir um patch para você após fazer as alterações no código fonte. Se você não tiver tempo para codificar sua idéia, apenas envie uma descrição.BitKeeper tem um ótimo utilitário de ajudar que você pode acessar via
bk helptool.Note que qualquer commit (
bk cioubk citool) irá disparar o envio da mensagem com as alterações para nossa lista de email internos, bem como a submissão openlogging.org usual apenas com os comentários da alteração. Geralmente você não precisar usar commit (já que o árvore pública não permitirábk push), mas é preferível usar o métodobk diffsdescrito arteriormente.
Você também pode procurar alterações, comentários e código fonte online procurando por ex. http://mysql.bkbits.net:8080/mysql-4.1 para MySQL 4.1.
O manual está em uma árvore separad que pode ser clonada com:
shell> bk clone bk://mysql.bkbits.net/mysqldoc mysqldoc
Existe também um árvore pública do BitKeeper para o MySQL Control Center e Connector/ODBC. Eles podem ser clonados da seguintes forma, respectivamente:
Para clonar o MySQL Control center, use o seguinte comando:
shell> bk clone http://mysql.bkbits.net/mysqlcc mysqlcc
Para clonar o Connector/ODBC, use o seguinte comando:
shell> bk clone http://mysql.bkbits.net/myodbc3 myodbc3
Todos programas MySQL compilam de forma limpa sem alertas no
solaris usando gcc. Em outros sistemas,
alertas podem ocorrer devido a diferenças em arquivos include
dos sistemas. Veja Secção 2.3.6, “Notas MIT-pthreads” para avisos
que podem ocorrer usando MIT-pthreads. Para outros problemas,
confira a lista abaixo.
A solução para vários problemas envolve reconfiguração. Se você precisa reconfigurar, faça notas do seguinte:
Se
configureé executado depois dele já ter sido chamado, ele pode usar informação que foi colhida durante a chamada anterior. Esta informação é armazenada no arquivoconfig.cache. Quandoconfigureinicia, ele procura por este arquivo, lê seu conteúdo, se ele existir, assumindo que aquela informação continua correta. Essa conjetura é inválida quando você reconfigurar.Cada vez que você executa
configure, você deve executarmakede novo para recompilar. Entretanto, você pode desejar remover primeiro antigos arquivos objeto de construções anteriores, porque eles foram compilados usando diferentes opções de configuração.
Para prevenir antigas informações de configurações ou
arquivos objetos de serem usados, execute estes comandos antes
de re-executar configure:
shell>rm config.cacheshell>make clean
Uma alternativa, seria executar make
distclean
A lista abaixo descreve alguns dos problemas compilando o MySQL que tem sido encontrados com mais frequencia:
Se você obtêm erros quando
sql_yacc.cccomo os mostrados abaixo, você provavelmente tem de falta de memória ou espaço de swap:Internal compiler error: program cc1plus got fatal signal 11 ou Out of virtual memory ou Virtual memory exhausted
O problema é que
gccnecessita de grande quantidade de memória para compilarsql_yacc.cccom funções inline. Tente executandoconfigurecom a opção--with-low-memory:shell>
./configure --with-low-memoryEsta opção adiciona
-fno-inlinena a linha de compilação se você estiver usandogcce-O0se você estiver usando outro programa. Você deve tentar a opção--with-low-memorymesmo se você tiver muita memória e espaço de swap que você ache ser suficieente para não ocorrer erros. Este problema tem ocorrido mesmo em sistemas com boas configurações de hardware e a opção--with-low-memorygeralmente corrige isto.Por padrão,
configureescolhec++como o nome do compilador e GNUc++liga com-lg++. Se você estiver usandogcc, este comportamento pode causar problemas durante a compilação, como o seguinte:configure: error: installation or configuration problem: C++ compiler cannot create executables.
Você podem também ter problemas durante a compilação relacionados à
g++,libg++oulibstdc++.Uma causa destes problemas é que você pode não ter
g++ou você pode terg++mas não ter olibg++ou olibstdc++. De uma olhada no arquivoconfig.log. Ele deve conter a razão exata do porque seu compilador C++ não funciona! Para trabalhar evitando estes problemas, você pode usargcccomo seu compilador C++. Tente configurar a variável de ambienteCXXpara"gcc -O3". Por exemplo:shell>
CXX="gcc -O3" ./configureIsto funciona porque
gcccompila código fonte C++ tão bem quantog++faz, mas não ifaz a ligação emlibg++oulibstdc++por padrão.Outra forma de corrigir estes problemas, com certeza, é instalando
g++,libg++elibstdc++. No entanto gostariamos de lhe recomendar a não usarlibg++oulibstdc++com o MySQL já que isto irá aumentar o tamanho do binário do mysqld sem lhe trazer nenhum benefício. Algumas versões destas bibliotecas também tem causado problemas estranhos para os utilizadores MySQL no passado.Usar
gcccomo compilador C++ também é exigido, se você quiser compilar o MySQL com a funcionalidade RAID (veja Secção 6.5.3, “SintaxeCREATE TABLE” para mais informações sobre tipos de tabela RAID) e você estiver usando o GNUgccversão 3 e acima. Se você obter erros como estes abaixo durante o estágio de ligação quando você configurar o MySQL para compilar com a opção--with-raid, tente usar ogcccomo o seu compilador C++ definindo a variável de ambienteCXXmencionada acima:gcc -O3 -DDBUG_OFF -rdynamic -o isamchk isamchk.o sort.o libnisam.a ../mysys/libmysys.a ../dbug/libdbug.a ../strings/libmystrings.a -lpthread -lz -lcrypt -lnsl -lm -lpthread ../mysys/libmysys.a(raid.o)(.text+0x79): In function `my_raid_create': : undefined reference to `operator new(unsigned)' ../mysys/libmysys.a(raid.o)(.text+0xdd): In function `my_raid_create': : undefined reference to `operator delete(void*)' ../mysys/libmysys.a(raid.o)(.text+0x129): In function `my_raid_open': : undefined reference to `operator new(unsigned)' ../mysys/libmysys.a(raid.o)(.text+0x189): In function `my_raid_open': : undefined reference to `operator delete(void*)' ../mysys/libmysys.a(raid.o)(.text+0x64b): In function `my_raid_close': : undefined reference to `operator delete(void*)' collect2: ld returned 1 exit status
Se sua compilação falhar com erros, como um dos seguintes, você deve atualizar sua versão de
makepara GNUmake:making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment or make: file `Makefile' line 18: Must be a separator (: or pthread.h: No such file or directory
O Solaris e o FreeBSD são conhecidos por terem alguns problemas com o
make.O GNU
makeversão 3.75 irá funcionar.Se você deseja definir algumas opções que devem ser usadas pelo seu compilador C ou C++, adicione as opções para as variáveis de ambiente
CFLAGSeCXXFLAGS. Você pode também especificar os nomes do compilador a ser usado da mesma forma utilizandoCCeCXX. Exemplo:shell>
CC=gccshell>CFLAGS=-O3shell>CXX=gccshell>CXXFLAGS=-O3shell>export CC CFLAGS CXX CXXFLAGSOlhe em Secção 2.2.8, “Binários MySQL compilados pela MySQL AB” para uma lista de definição de opções que tenham sido úteis em vários sistemas.
Se você recebeu uma mensagem de erro como esta, é necessário atualizar o compilador
gcc:O
gcc2.8.1 funciona, mas recomendamos o uso dogcc2.95.2 ouegcs1.0.3a em seu lugar.Se você obtem erros como estes vistos abaixo enquanto estiver compilando o
mysqld, oconfigurenão detectou corretamente o tipo do último argumento paraaccept(),getsockname()ougetpeername():cxx: Error: mysqld.cc, line 645: In this statement, the referenced type of the pointer value "&length" is "unsigned long", which is not compatible with "int". new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
Para corrigir isto, edite o arquivo
config.h(que é gerado peloconfigure). Procure por estas linhas:/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXX
Altere
XXXparasize_touint, dependendo de seu sistema operacional. (Perceba que você deverá fazer isto cada vez que você executarconfigure, porqueconfigureregeneraconfig.h.)O arquivo
sql_yacc.ccé gerado pelosql_yacc.yy. Normalmente o processo de construção não necessita criarsql_yacc.cc, porque o MySQL já vem com uma cópia pré-gerada. Entretanto, se você necessita recriá-lo você pode encontrar este erro:"sql_yacc.yy", line xxx fatal: default action causes potential...
Isto é um indício de que sua versão do
yaccé deficiente. Provavelmente você precisará instalar obison(a versão GNU deyacc) e usá-lo no lugar doyacc.Se você necessita depurar
mysqldou um cliente MySQL, executeconfigurecom a opção--with-debug, então recompile e ligue seus clientes com a nova biblioteca cliente. See Secção E.2, “Depurando um cliente MySQL.”.Se você tem um erro de compilação no Linux (ex. SuSE Linux 8.1 ou Red Hat Linux 7.3) parecido com o seguinte:
libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from incompatible pointer type libmysql.c:1329: too few arguments to function `gethostbyname_r' libmysql.c:1329: warning: assignment makes pointer from integer without a cast make[2]: *** [libmysql.lo] Error 1
Por padrão, o script
configuretenta determinar o número correto de argumentos usando o compilador GNU C++g++. Ele testa os resultados errados permitidos, se og++não está instalado. Existem dois modos de contornar este problema:Certifique-se de que o GNU C++
g++está instalado. Em algumas distribuições Linux, o pacote exigido é chamadogpp, em outro ele é chamadogcc-c++.Use o
gcccomo o seu compilador C++ configurando a variáavel de ambienteCXXparagcc:export CXX="gcc"
Note que você precisa executar o
configurenovamente após isto.
Esta seção descreve alguns dos detalhes envolvidos no uso de MIT-pthreads.
Note que no Linux você NÃO deve usar
MIT-pthreads mas instalar LinuxThreads! See
Secção 2.6.2, “Notas Linux (Todas as versões)”.
Se seu sistema não fornece suporte nativo a thread, você precisará construir o MySQL usando o pacote MIT-pthreads. Isto inclui antigos sistemas FreeBSD, SunOS 4.X, Solaris 2.4 e anteriores entre outros. See Secção 2.2.3, “Sistemas Operacionais suportados pelo MySQL”.
Note que a partir do MySQL 4.0.2, MIT-pthreads não fazem mais parte da distribuição fonte. Se você precisar deste pacote, você precisa fazer o download dele separadamente em http://www.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.tar.gz
Depois do download, extraia este arquivo fonte no nível mais
alto do diretório de fontes do MySQL. Ele criará um novo
subdiretório mit-pthreads.
Na maioria dos sitemas, você pode forçar o uso de MIT-pthreads executando o
configurecom a opção--with-mit-threads:shell>
./configure --with-mit-threadsConstrução em um diretório não fonte não é suportado com o uso de MIT-pthreads, porque nós queremos minimizar nossas alterações para este código.
As verificações que determinam se MIT-pthreads será usado ou não, ocorrerá somente durante a parte do processo de configuração que trata com o código do servidor. Se você configurou a distribuição usando
--without-serverpara construir somente o código cliente, clientes não irão saber se o MIT-pthreads está sendo usado e irá usar conexões socket Unix por padrão. Como os sockets Unix não funcionam sob MIT-pthreads, isto significa que você precisará usar-hou--hostquando executar programas clientes.Quando o MySQL é compilado usando MIT-pthreads, travas de sistema são desabilitadas por padrão por razões de performance. Você pode dizer ao servidor para usar travas de sistema com a opção
--external-locking. Isto só é necessário se você quiser executar dois servidores MySQL no mesmo diretório de dados (no que não é recomendado)Algumas vezes o comando pthread
bind()falha ao ligar a um socket sem nenhuma mensagem de erro (pelo menos no Solaris). O resultado é que todas conexões ao servidor falham. Por exemplo:shell>
mysqladmin versionmysqladmin: connect to server at '' failed; error: 'Can't connect to mysql server on localhost (146)'A solução para isto é matar o servidor
mysqlde reiniciá-lo. Isto só aconteceu conosco quando forçamos uma queda do servidor e fizemos uma reinicialização imediata.Com MIT-pthreads, a chamada de sistema
sleep()não é interrompível comSIGINT(break). Isto só é percebido quando você executamysqladmin --sleep. Você deve esperar pela chamadasleep()para terminar, antes da interrução ser servida e o processo parar.Na ligação, você pode receber mensagens de alerta como estes (pelo menos no Solaris); elas podem ser ignoradas:
ld: warning: symbol `_iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken ld: warning: symbol `__iob' has differing sizes: (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4; file /usr/lib/libc.so value=0x140); /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
Alguns outros alertas também podem ser ignorados:
implicit declaration of function `int strtoll(...)' implicit declaration of function `int strtoul(...)'
Não colocamos
readlinepara funcionar com MIT-pthreads. (Isto não é necessário, mas pode ser interessante para alguns.)
Estas instruções descrevem como construir o binário do MySQL a partir do fonte paras versões 4.1 e acima no Windows. As instruções são fornecidas para construir binários a partir de uma distribuição fonte padrão ou a partir da árvore do BitKeeper que contém o fonte do desenvolvimento mais atuais.
Nota: As instruções neste documento estão restritas aos utilizadores que queiram testar o MySQL no Windows a partir da última distribuição fonte ou da árvore do BitKeeper. Para uso em produção, a MySQL AB não aconselha que você utilize um servidor MySQL construído por você mesmo a partir de um fonte. Normalmente é melhor usar uma distribuição binária precompilada do MySQL que é construída especificamente para desempenho otimizado no Windows pela MySQL AB. Instruções para instalar uma distribuição binária está disponível em Secção 2.1.1, “Instalando o MySQL no Windows”.
Para construir o MySQL no Windows a partir do fonte, você precisa dos seguintes compiladores e recursos disoníveis em seu sistema Windows:
Compilador VC++ 6.0 (atualizado com o SP 4 ou 5 e pacote Pre-processador) O pacote Pre-processador é necessário para a macro assembler. Mais detalhes em: http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp5/faq.aspx.
Aproximadamente 45 MB de espaço em disco.
64 MB de RAM
Você também precisará de um distribuição fonte para o Windows. Existem dois modos de conseguir uma distribuição fonte do MySQL versão 4.1 e acima:
Obtenha um pacote de uma distribuição fonte pela MySQL AB para a versão do MySQL que você está particularmente interessado. Distribuições fontes empacotadas estão disponíveis para versões distribuídas do MySQ e podem ser obtidas em http://www.mysql.com/downloads/.
Você pode empacotar um distribuição fonte você mesmo a partir da ultima árvore fonte de desenvolvimento do BitKeeper. Se você planeja fazer isto, você deve criar o pacote em um sistema Unix e então transfrí-lo para seu sistema Windows. (A razão para isto é que alguns dos passos de configuração e construção exigem ferramentas que funcionam apenas no Unix.) A abordagem do BitKeeper, exige:
Um sistema executando Unix ou um sistema tipo Unix, como o Linux
BitKeeper 3.0 instalado neste sistema. Você pode obter o BitKeeper em http://www.bitkeeper.com/.
Se você estiver usando uma distribuição fonte do Windows, você pode ir diretamente para Secção 2.3.7.1, “Construindo o MySQL Usando VC++”. Para contruir a partir da árvore do BitKeeper, vá para Secção 2.3.7.2, “Criando um Pacote Fonte do Windows a partir da Última Fonte de Desenvolvimento”.
Se você encontrar alguma coisa que não está funcionando como
esperado, ou tiver sugestões sobre o mode de melhorar o
processo de construção atual no Windows, envie uma mensagem
para a lista de email win32. See
Secção 1.7.1.1, “As Listas de Discussão do MySQL”.
Nota: O MySQL 4.1 e arquivos do espeço de trabalho do VC++ são compatíveis com o Microsoft Visual Studio 6.0 e as edições acima (7.0/.NET) e testados pela equipe da MySQL AB antes de cada distribuição.
Siga este procedimento para construir o MySQL:
Crie um diretório de trabalho (ex.:
workdir).Descompacte a distribuição fonte no diretório mencionado acima usando
Winzipou outra ferramenta que possa ler arquivos.zip.Inicie o compilador VC++ 6.0.
No menu
File, selecioneOpen Workspace.Abra o workspace
mysql.dswque você encontrar no diretório de trabalho.No menu
Build, selcione o menuSet Active Configuration.Clique sobre a tela selecionada
mysqld - Win32 Debuge clique OK.Pressione
F7para iniciar a construção da depuração do servidor, bibliotecas e alguns aplicativos clientes.Compile as versões distribuídas que você desejar, do mesmo modo.
Versões depuradas dos programas e bibliotecas são colocados nos diretórios
client_debugelib_debug. Versões liberadas dos programas e bibliotecas são colocados nos diretóriosclient_releaseelib_release. Note que se você quiser construir tanto versões liberadas quanto depuradas você pode selecionar a opção ``build all'' do menuBuild.Teste o servidor. O servidor construído usando as instruções anteriores irá esperar que o diretório base e de dados do MySQL seja
C:\mysqleC:\mysql\datapor padrão. Se você quiser testar o seu servidor usando o diretório raiz de uma árvore fonte e seu diretório de dados como o diretório base e o diretório de dados, você precisará dizer ao servidor os seus caminhos. Você também pode fazer into na linha de comando com as opções--basedire--datadir, ou colocar opções apropriadas no arquivo de opções (o arquivoC:\my.cnfoumy.inino diretório do Windows). Se você tiver um diretório de dados existente em qualquer lugar que você queira usar, você pode especificá-lo no se caminho.Inicie o ser servidor a partir do diretório
client_releaseouclient_debug, dependendo de qual servidor você queira usar. O instruções gerais de inicializaão do servidor estão em Secção 2.1.1, “Instalando o MySQL no Windows”. Você precisará adaptar as instruções de forma apropriada se você quiser usar um diretório base ou diretório de dados diferente.Quando o servidor está em execução de modo independente ou como um serviço daseado em sua configuração, tente se conectar a ele pelo utilitário interativo
mysqlde linha de comando que existe em seu diretórioclient_releaseouclient_debug.
Quando você estiver certo de que os programas que você construiu estão funcionando corretamente, pare o servidor. Então instale o MySQL da seguinte forma:
Crie o diretório para instalar os arquivos do MySQL. Por exemplo, para instalar dentro de
C:\mysql), use estes comandos:C: mkdir \mysql mkdir \mysql\bin mkdir \mysql\data mkdir \mysql\share mkdir \mysql\scripts
Se você quiser compilar outros clientes e ligá-los ao MySQL, você também deve criar diversos diretórios adicionais:
mkdir \mysql\include mkdir \mysql\lib mkdir \mysql\lib\debug mkdir \mysql\lib\opt
Se você quiser fazer um benchamrk do MySQL, crie este diretório:
mkdir \mysql\sql-bench
Benchmark exigem suporte Perl.
Copie do diretório
workdirpara o diretórioc:\mysqlos seguintes diretórios:copy client_release\*.exe C:\mysql\bin copy client_debug\mysqld.exe C:\mysql\bin\mysqld-debug.exe xcopy scripts\*.* C:\mysql\scripts /E xcopy share\*.* C:\mysql\share /E
Se você quiser compilar outros clientes e ligá-los ao MySQL, você também deve fazer isto:
copy lib_debug\mysqlclient.lib C:\mysql\lib\debug copy lib_debug\libmysql.* C:\mysql\lib\debug copy lib_debug\zlib.* C:\mysql\lib\debug copy lib_release\mysqlclient.lib C:\mysql\lib\opt copy lib_release\libmysql.* C:\mysql\lib\opt copy lib_release\zlib.* C:\mysql\lib\opt copy include\*.h C:\mysql\include copy libmysql\libmysql.def C:\mysql\include
Se você quiser fazer um benchmark do MySQL, você também deve fazer isto:
xcopy sql-bench\*.* C:\mysql\bench /E
Configure e inicie o servidor da mesma forma que a distribuição binária do Windows. See Secção 2.1.1.3, “Preparando o Ambiente MySQL do Windows”.
Para construir o último pacote fonte do Windows a partir da arvoré fonte atual do BitKeeper, use as seguintes instruções. Por favor, note que este procedimento deve ser realizado em um sistema executando um sistema opercional Unix ou similar. (Sabe-se que este procedimento funciona bem com o Linux, por exemplo.)
Clone a árvore fonte do BitKeeper para o MySQL (versão 4.1 ou acima, como desejado). Para mais informações sobre como clonar a árvore fonte veja as instruções em Secção 2.3.4, “Instalando pela árvore de fontes do desenvolvimento”.
Configure e construa as distribuições para que você tenha um binário do servidor para trabalhar. Um modo de se fazer isto é executar o seguinte comando no diretório de mais alto nível de sua árvore fonte:
shell>
./BUILD/compile-pentium-maxDepois de se certificar que o processo de construção foi completado com sucesso, execute o seguinte script utilitário a a partir do diretório de nível mais alto da sua arvore fonte:
shell>
./scripts/make_win_src_distributionEste script cria um pacote fonte Windows. para ser usado em seu sistema Windows. Você pode fornecer diferentes opções para o script baseado em suas necessidades. Ele aceita as seguintes opções:
--debug Depura, sem criar o pacote --tmp Especifica a localização temporária --suffix Nome de sufixo para o pacote --dirname Nome do diretório onde os arquivos são copiados (intermediario) --silent Não apresenta uma lista dos arquivos processados --tar Cria um pacote tar.gz em vez de .zip --help Mostra esta mensagem de ajuda
Por padrão,
make_win_src_distributioncria um arquivo zipado com o nomemysql-VERSION-win-src.zip, ondeVERSIONrepresenta a versão de sua árvore fonte do MySQL.Faça uma copia ou upload para a sua máquina o pacote fonte Windows que você tiver criado. Para compilá-lo use as instruções em Secção 2.3.7.1, “Construindo o MySQL Usando VC++”.

