XOOPS Brasil

 

2.3. Instalando uma distribuição com fontes do MySQL

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 gunzip para descompactar a distribuição.

  • Um tar razoável para desempacotar a distribuição. Sabe-se que o GNU tar funciona. Algumas implementações tar que vêm pré-instaladas como o sistema operacional (ex. Sun tar) possuem problemas (com nome de arquivos grandes, por exemplo) Neste caso, você deve instalar o GNU tar primeiro.

  • Um compilador ANSI C++ funcional. gcc >= 2.95.2, egcs >= 1.0.2 ou egcs 2.91.66, SGI C++, e SunPro C++ são alguns dos compiladores que sabemos que funcionam. A libg++ não é necessária quando o gcc for usado. gcc 2.7.x tem um bug que torna impossível compilar alguns arquivos C++ perfeitamente corretos, como o sql/sql_base.cc. Se você possui somente o gcc 2.7.x você deve atualiza-lo para conseguir compilar o MySQL. gcc 2.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. GNU make é sempre recomendado e é algumas vezes necessário. Se você tiver problemas, recomendamos tentar o GNU make 3.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. Veja mais informações sobre isto na Seção 1.7.1.3, “Como relatar erros ou problemas”.

2.3.1. Visão geral da instalação rápida

Os comandos básicos que você deve executar para instalar o MysQL a partir da distribuição fonte são:

shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /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_.... Veja mais informações sobre isto na Seção 4.1.2, “Arquivo de Opções my.cnf. Veja mais informações sobre isto na Seçã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 Seção 2.4, “Configurações e Testes Pós-instalação”, para inicialização do pós-instalação e testes:

  1. Escolha o diretório sobre o qual você deseja descompactar a distribuição e vá para ele.

  2. Obtenha um arquivo de distribuição de algum dos sites listados em Seção 2.2.1, “Como obter o MySQL”.

  3. 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. Veja mais informações sobre isto na Seção 7.6, “Tabelas BDB ou BerkeleyDB.

    Distribuições fontes do MySQL são fornecidas como arquivos tar compactados e tem nomes como mysql-VERSION.tar.gz, onde VERSION é um número como 5.0.6-beta.

  4. Adicione um utilizador e grupo para o mysql executar assim:

    shell> groupadd mysql
    shell> useradd -g mysql mysql
    

    Estes comandos adicionam o grupo mysql e o utilizador mysql. A sintaxe para useradd e groupadd podem mudar um pouco em diferentes versões de Unix. Elas podem também ser chamadas adduser e addgroup. Você pode escolher outros nomes para o utilizador e grupo em vez de mysql.

  5. 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.

  6. Mude para o diretório da distribuição descompactada:

    shell> cd mysql-VERSION
    

    Note 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.

  7. Configure o release e compile tudo:

    shell> ./configure --prefix=/usr/local/mysql
    shell> make
    

    Quando você executar configure, você pode desejar especificar algumas opções. Execute ./configure --help para uma lista das opções. Seção 2.3.3, “Opções típicas do configure, discute algumas das opções mais usadas.

    Se o configure falhar, e você for enviar uma mensagem para lista de email do MySQL para pedir ajuda, por favor, inclua qualquer linhas de config.log que você acha que pode ajudar a resolver o problema. Também inclua as últimas linhas da saída de configure se o configure abortar. Envie o relatório de erros usando o script mysqlbug. Veja mais informações sobre isto na Seção 1.7.1.3, “Como relatar erros ou problemas”.

    Se a compilação falhar, veja Seção 2.3.5, “Lidando com Problemas de Compilação”, para uma ajuda com um varios problemas comuns.

  8. Instalar tudo:

    shell> make install
    

    Você deve executar este comando como root.

  9. Crie as tabelas de permissões do MySQL (necessárias só se você não tiver instalado o MySQL anteriormente):

    shell> scripts/mysql_install_db
    

    Note 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!

  10. Altere o dono dos binários para root e do diretório dados para o utilizador que irá executar o mysqld:

    shell> chown -R root /usr/local/mysql
    shell> chown -R mysql /usr/local/mysql/var
    shell> chgrp -R mysql /usr/local/mysql
    

    O primeiro comando altera o atributo de proriedade dos arquivos para o utilizador root, o segundo altera o atributo de propriedade do diretório de dados para o utilizador mysql, e o terceiro altera o atributo de grupo para o grupo mysql.

  11. Se você deseja instalar suporte para a interface Perl DBI/DBD, veja Seção 2.7, “Comentários de Instalação do Perl”.

  12. Se você deseja que o MySQL inicie automaticamente quando você ligar sua máquina, você pode copiar support-files/mysql.server para o local onde seu sistema tem seus arquivos de incialização. Mais informações podem ser encontradas no próprio script support-files/mysql.server e em Seçã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. Veja mais informações sobre isto na Seção 4.2, “Executando Múltiplos MySQL Servers na Mesma Máquina”.

Veja mais informações sobre isto na Seção 2.4, “Configurações e Testes Pós-instalação”.

2.3.2. Aplicando patches

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-name
shell> rm config.cache
shell> 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 -p1
shell> rm config.cache
shell> 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.

2.3.3. Opções típicas do configure

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. Veja mais informações sobre isto na 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-server
    

    Se você não possui um compilador C++, mysql não irá compilar (ele é o programa cliente que exige C++). Neste caso, você pode remover o código no configure que testa pelo compilador C++ e executar ./configure com a opção --without-server. O passo da compiação continuará tentaindo construir mysql, mas você pode ignorar as advertências sobre mysql.cc. (Se o make parar, tente make -k para 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 comando configure; algo parecido com um destes:

    shell> ./configure --prefix=/usr/local/mysql
    shell> ./configure --prefix=/usr/local \
    --localstatedir=/usr/local/mysql/data
    

    O primeiro comando altera o diretório instalação para que tudo seja instalado sobre /usr/local/mysql em 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. Veja mais informações sobre isto na Seção 4.1.2, “Arquivo de Opções my.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 /tmp ou /var/run) use o comando configure da seguinte forma:

    shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
    

    Perceba que o arquivo fornecido deve ter um caminho absoluto ! Você também pode, mais tarde, alterar a localização de mysql.sock usando os arquivos de opções do MySQL. Veja mais informações sobre isto na Seçã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 configure desta forma:

    shell> ./configure --with-client-ldflags=-all-static \
    --with-mysqld-ldflags=-all-static
    
  • Se você estiver usando gcc e não tem libg++ ou libstdc++ instalados você pode dizer ao configure para usar o gcc como seu compilador C++:

    shell> CC=gcc CXX=gcc ./configure
    

    Quando você usar como seu compilador C++, ele não tentará ligar com o libg++ ou libstdc++. 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:

    CompilerRecommended options
    gcc 2.7.2.1CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
    egcs 1.0.3aCC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"
    gcc 2.95.2CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \ -felide-constructors -fno-exceptions -fno-rtti"
    pgcc 2.90.29 or newerCFLAGS="-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. Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seçã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-share para o configure. Neste caso, configure não construirá uma biblioteca libmysqlclient.so.* compartilhada.

  • Você pode configurar o MySQL para não usar valores de campos DEFAULT para campos não-NULL (isto é, campos que não podem ser NULL). Veja mais informações sobre isto na Seção 1.8.5.2, “Restrições de NOT NULL.

    shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
    
  • Por 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=CHARSET
    

    CHARSET pode ser um de big5, 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, ou win1251ukr. Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seção 5.5.6, “Sintaxe de SET.

    Cuidado: Se você alterar o conjunto de caracteres depois de ter criado qualquer tabela, você deve executar myisamchk -r -q --set-character--set=charset em 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=LISTA você pode definir qual conjunto de caracteres adicionais deve ser compilado no servidor.

    Aqui LISTA é uma lista de conjuntos de caracteres separados por espaços, complex para incluir todos caracteres que não podem ser carregados dinamicamente ou all para 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-debug
    

    Isto inclui uma alocação segura de memória que pode encontrar alguns erros e fornecer saída sobre o que está acontecendo. Veja mais informações sobre isto na Seçã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 biblioteca libmysqlclient_r com o qual você deverá ligar suas aplicações que fazem uso de threads. Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seção 2.6, “Notas específicas para os Sistemas Operacionais”.

2.3.4. Instalando pela árvore de fontes do desenvolvimento

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:

  1. 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.

  2. Siga as instruções para instalá-lo.

  3. 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.23
    

    Para clonar o ramo 4.0 (estável/produção), use este comando:

    shell> bk clone bk://mysql.bkbits.net/mysql-4.0 mysql-4.0
    

    Para clonar o ramo 4.1 alfa, use este comando:

    shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1
    

    Para clonar o ramo de desenvolvimento 5.0, use este comando:

    shell> bk clone bk://mysql.bkbits.net/mysql-5.0 mysql-5.0
    

    Nos exemplos anteriores a árvore binária será configurada no subdiretório mysql-3.23/, mysql-4.0/, mysql-4.1/, ou mysql-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 BitKeeper via HTTP.

    Se vocÊ precisa usar um servidor proxy, simplesmente configure a variável de ambiente http_proxy para apontar para o seu proxy:

    shell> export http_proxy="http://seu.servidor.proxy:8080/"
    

    Agora, simplesmente substitua o bk:// com o http:// ao fazer um clone. Exemplo:

    shell> bk clone http://mysql.bkbits.net/mysql-4.1 mysql-4.1
    

    O download inicial da árvore fonte pode demorar um pouco, dependendo da velocidade de sua conexão; seja paciente.

  4. Você precisará do GNU make, autoconf 2.53 (ou posterior), automake 1.5, libtool 1.4 e m4 para executar o próximo conjunto de comandos. Embora muitos sistemas operacionais já venham com suas próprias implementações do make, as chances de que a sua compilação falhe com mensagens de erros estranhas são altas. Consequentemente é altamente recomendado usar o GNU make (algumas vezes também chamado gmake).

    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 do bison podem 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 do bison.

    Versões do MySQL anteriores a 4.1 podem também compilar com outras implementações yacc (e.g. BSD yacc 91.7.30). Para versões posteriores, GNU bison é 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 libtool instalada!

    Uma coleção de nossos scripts de configuração padrões está localizada no subdiretório BUILD/. Se preferir, você pode usar BUILD/compile-pentium-debug. Para compilar em uma arquitetura diferente, modifique o script removendo opções que são específicas da arquitetura Pentium.

  5. 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 ./configure com valores diferentes para as opções prefix, tcp-port e unix-socket-path que as usadas pelo seu servidor em produção.

  6. Seja rígido com sua nova instalação e tente fazer com que os novos recursos falhem. Inicie executando make test. Veja mais informações sobre isto na Seção 14.1.2, “Pacotes de Teste do MySQL”.

  7. Se você chegar ao estágio make e a distribuição não compilar, por favor relate-o para . 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ê executar aclocal e obtêm um erro de command not found não o reporte.Tenha certeza que todas as ferramentas necessárias estejam instaladas e que sua variável PATH esteja corretamente configurada para que sua shell possa encontrá-la.

  8. Depois da operação inicial bk clone para obter a árvore fonte, você deve executar bk pull periodicamente para obter as atualizações.

  9. 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. Veja mais informações sobre isto na Seçã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 diffs irá 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.

  10. BitKeeper tem um ótimo utilitário de ajudar que você pode acessar via bk helptool.

  11. Note que qualquer commit (bk ci ou bk 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étodo bk diffs descrito 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

2.3.5. Lidando com Problemas de Compilação

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 Seçã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 arquivo config.cache. Quando configure inicia, 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 executar make de 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.cache
shell> 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.cc como 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 gcc necessita de grande quantidade de memória para compilar sql_yacc.cc com funções inline. Tente executando configure com a opção --with-low-memory:

    shell> ./configure --with-low-memory
    

    Esta opção adiciona -fno-inline na a linha de compilação se você estiver usando gcc e -O0 se você estiver usando outro programa. Você deve tentar a opção --with-low-memory mesmo 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-memory geralmente corrige isto.

  • Por padrão, configure escolhe c++ como o nome do compilador e GNU c++ liga com -lg++. Se você estiver usando gcc, 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++ ou libstdc++.

    Uma causa destes problemas é que você pode não ter g++ ou você pode ter g++ mas não ter o libg++ ou o libstdc++. De uma olhada no arquivo config.log. Ele deve conter a razão exata do porque seu compilador C++ não funciona! Para trabalhar evitando estes problemas, você pode usar gcc como seu compilador C++. Tente configurar a variável de ambiente CXX para "gcc -O3". Por exemplo:

    shell> CXX="gcc -O3" ./configure
    

    Isto funciona porque gcc compila código fonte C++ tão bem quanto g++ faz, mas não ifaz a ligação em libg++ ou libstdc++ por padrão.

    Outra forma de corrigir estes problemas, com certeza, é instalando g++, libg++ e libstdc++. No entanto gostariamos de lhe recomendar a não usar libg++ ou libstdc++ 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 gcc como compilador C++ também é exigido, se você quiser compilar o MySQL com a funcionalidade RAID (veja Seção 6.5.3, “Sintaxe CREATE TABLE para mais informações sobre tipos de tabela RAID) e você estiver usando o GNU gcc versã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 o gcc como o seu compilador C++ definindo a variável de ambiente CXX mencionada 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 make para GNU make:

    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 make versã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 CFLAGS e CXXFLAGS. Você pode também especificar os nomes do compilador a ser usado da mesma forma utilizando CC e CXX. Exemplo:

    shell> CC=gcc
    shell> CFLAGS=-O3
    shell> CXX=gcc
    shell> CXXFLAGS=-O3
    shell> export CC CFLAGS CXX CXXFLAGS
    

    Olhe em Seçã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 gcc 2.8.1 funciona, mas recomendamos o uso do gcc 2.95.2 ou egcs 1.0.3a em seu lugar.

  • Se você obtem erros como estes vistos abaixo enquanto estiver compilando o mysqld, o configure não detectou corretamente o tipo do último argumento para accept(), getsockname() ou getpeername():

    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 pelo configure). Procure por estas linhas:

    /* Define as the base type of the last arg to accept */
    #define SOCKET_SIZE_TYPE XXX
    

    Altere XXX para size_t ou int, dependendo de seu sistema operacional. (Perceba que você deverá fazer isto cada vez que você executar configure, porque configure regenera config.h.)

  • O arquivo sql_yacc.cc é gerado pelo sql_yacc.yy. Normalmente o processo de construção não necessita criar sql_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 o bison (a versão GNU de yacc) e usá-lo no lugar do yacc.

  • Se você necessita depurar mysqld ou um cliente MySQL, execute configure com a opção --with-debug, então recompile e ligue seus clientes com a nova biblioteca cliente. Veja mais informações sobre isto na Seçã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 configure tenta determinar o número correto de argumentos usando o compilador GNU C++ g++. Ele testa os resultados errados permitidos, se o g++ 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 é chamado gpp, em outro ele é chamado gcc-c++.

    • Use o gcc como o seu compilador C++ configurando a variáavel de ambiente CXX para gcc:

      export CXX="gcc"
      

    Note que você precisa executar o configure novamente após isto.

2.3.6. Notas MIT-pthreads

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! Veja mais informações sobre isto na Seçã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. Veja mais informações sobre isto na Seçã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://mysql.cce.usp.br/Downloads/Contrib/Old-Versions/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 configure com a opção --with-mit-threads:

    shell> ./configure --with-mit-threads
    

    Construçã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-server para 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 -h ou --host quando 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 version
    mysqladmin: connect to server at '' failed;
    error: 'Can't connect to mysql server on localhost (146)'
    

    A solução para isto é matar o servidor mysqld e 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 com SIGINT (break). Isto só é percebido quando você executa mysqladmin --sleep. Você deve esperar pela chamada sleep() 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 readline para funcionar com MIT-pthreads. (Isto não é necessário, mas pode ser interessante para alguns.)

2.3.7. Instalando o MySQL a partir do Fonte no Windows

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 Seçã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:

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:

  1. 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/.

  2. 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 Seção 2.3.7.1, “Construindo o MySQL Usando VC++”. Para contruir a partir da árvore do BitKeeper, vá para Seçã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. Veja mais informações sobre isto na Seção 1.7.1.1, “As Listas de Discussão do MySQL”.

2.3.7.1. Construindo o MySQL Usando VC++

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:

  1. Crie um diretório de trabalho (ex.: workdir).

  2. Descompacte a distribuição fonte no diretório mencionado acima usando Winzip ou outra ferramenta que possa ler arquivos .zip.

  3. Inicie o compilador VC++ 6.0.

  4. No menu File, selecione Open Workspace.

  5. Abra o workspace mysql.dsw que você encontrar no diretório de trabalho.

  6. No menu Build, selcione o menu Set Active Configuration.

  7. Clique sobre a tela selecionada mysqld - Win32 Debug e clique OK.

  8. Pressione F7 para iniciar a construção da depuração do servidor, bibliotecas e alguns aplicativos clientes.

  9. Compile as versões distribuídas que você desejar, do mesmo modo.

  10. Versões depuradas dos programas e bibliotecas são colocados nos diretórios client_debug e lib_debug. Versões liberadas dos programas e bibliotecas são colocados nos diretórios client_release e lib_release. Note que se você quiser construir tanto versões liberadas quanto depuradas você pode selecionar a opção ``build all'' do menu Build.

  11. 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:\mysql e C:\mysql\data por 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 --basedir e --datadir, ou colocar opções apropriadas no arquivo de opções (o arquivo C:\my.cnf ou my.ini no 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.

  12. Inicie o ser servidor a partir do diretório client_release ou client_debug, dependendo de qual servidor você queira usar. O instruções gerais de inicializaão do servidor estão em Seçã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.

  13. 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 mysql de linha de comando que existe em seu diretório client_release ou client_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:

  1. 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.

  2. Copie do diretório workdir para o diretório c:\mysql os 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. Veja mais informações sobre isto na Seção 2.1.1.3, “Preparando o Ambiente MySQL do Windows”.

2.3.7.2. Criando um Pacote Fonte do Windows a partir da Última Fonte de Desenvolvimento

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.)

  1. 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 Seção 2.3.4, “Instalando pela árvore de fontes do desenvolvimento”.

  2. 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-max
    
  3. Depois 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_distribution
    

    Este 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_distribution cria um arquivo zipado com o nome mysql-VERSION-win-src.zip, onde VERSION representa a versão de sua árvore fonte do MySQL.

  4. 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 Seção 2.3.7.1, “Construindo o MySQL Usando VC++”.