2013-06-21 11 views
28

Ho aggiornato tutti i pacchetti che ho installato con Homebrew. MySQL hanno assegnato 5.6.12 (dal 5.5.27 o giù di lì):mysql2 gem non riesce a compilare con MySQL 5.6.12 su OS X con Homebrew

$ mysql --version 
mysql Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using EditLine wrapper 

e ora la gemma mysql2 non può essere compilato più:

$ gem install mysql2 
Building native extensions. This could take a while... 
ERROR: Error installing mysql2: 
    ERROR: Failed to build gem native extension. 

     /Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes 
checking for rb_wait_for_single_fd()... yes 
checking for mysql.h... no 
checking for mysql/mysql.h... no 
----- 
mysql.h is missing. please check your installation of mysql and try again. 
----- 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
    --with-opt-dir 
    --with-opt-include 
    --without-opt-include=${opt-dir}/include 
    --with-opt-lib 
    --without-opt-lib=${opt-dir}/lib 
    --with-make-prog 
    --without-make-prog 
    --srcdir=. 
    --curdir 
    --ruby=/Users/pupeno/.rvm/rubies/ruby-1.9.3-p429-perf/bin/ruby 
    --with-mysql-config 
    --without-mysql-config 

Il file mysql.h è presente in /usr/local/Cellar/mysql/5.6.12/include/mysql.h. Qualche idea su cosa sta succedendo?

Il file mysql.h non appare nel /usr/local perché il link simbolico sembra andare più in profondità di quanto dovrebbe:

$ ls -la /usr/local/include/mysql 
lrwxr-xr-x 1 pupeno admin 36 21 Jun 15:18 /usr/local/include/[email protected] -> ../Cellar/mysql/5.6.12/include/mysql 

invece di

/usr/local/Cellar/mysql/5.6.12/include 

Detto questo, ho fissato manualmente il collegamento simbolico e la compilazione è ancora fallita. Quindi sono bloccato.

+1

Avete installato la libreria di sviluppo mysql? –

+0

@HunterMcMillen Ho pensato che tutti i file di sviluppo sono stati installati con il pacchetto mysql brew. Cosa mi manca? – Pablo

+0

Homebrew + rbenv ha sempre funzionato per me. Potrebbe essere un problema RVM? Inoltre, 'mysql.h' è effettivamente presente dove pensi che sia? – tadman

risposta

30

Ho avuto lo stesso problema, sono riuscito a risolverlo. Ho fatto un sacco di cose, e non so per certo di cosa si trattasse, ma andare a MySQL 5.6.10 sembra aver funzionato.

Disinstalla MySQL 5.6.12:

brew unlink mysql 
brew uninstall mysql 

Vai alla directory homebrew:

cd /usr/local 

Vai alla versione 5.6.10 (è possibile trovare un elenco delle versioni eseguendo brew versions mysql:

git checkout 48f7e86 Library/Formula/mysql.rb 

Quindi installare nuovamente mysql:

brew install mysql 

E ora gem install mysql2 funziona per me.

Ho anche installato mysql dal codice sorgente (brew install mysql --build-from-source), ma questo non lo ha risolto, ma potrebbe essere parte della soluzione.

+7

La risposta di iain l'ha risolto per me. In homebrew 0.9.4 (non sono sicuro di altre versioni) puoi usare 'brew pin mysql' dopo aver effettuato il downgrade a 5.6.10, e questo impedirà che venga aggiornato se usi' brew upgrade' regolarmente. –

+0

Grazie a questo aiuto. – prcaen

+0

Funziona come un fascino! :) – sborsje

8

Anche questo sembrava funzionare per me. Costringe la gemma a compilare contro 5.6.10.

bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config 

risposta correlati: https://stackoverflow.com/a/9360181

+1

Funziona solo se in realtà esiste un mysql 5.6.10 installato su quel percorso. – Jan

+1

Ha funzionato alla grande! Basta fare in modo che il percorso faccia riferimento alla versione di MySQL installata. (Nel mio caso, avevo bisogno di compilare 5.1) –

+0

Questo riscrive '~/.bundle/config'. –

18

solo;)

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config 
9

La risposta superiore qui è MySQL out-of-date ... i produttori di birra hanno fissato:

brew update 
brew upgrade mysql 
gem install mysql2 

Questo aggiornerà mysql a 5,6.13, che sembra funzionare bene con la gemma mysql2 su OSX.

+0

Ha funzionato come un fascino! Grazie compagno. –

Problemi correlati