La gema mysql2 no se compila con MySQL 5.6.12 en OS X con Homebrew
ruby macos (5)
Actualicé todos los paquetes que instalé con Homebrew. MySQL se actualizó a 5.6.12 (de 5.5.27 más o menos):
$ mysql --version
mysql Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using EditLine wrapper
y ahora la gema mysql2 ya no se compila:
$ 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
El archivo mysql.h
está presente en /usr/local/Cellar/mysql/5.6.12/include/mysql.h
. ¿Alguna idea de qué está pasando?
El archivo mysql.h
no aparece en /usr/local
porque el enlace simbólico parece ir más profundo de lo que debería:
$ ls -la /usr/local/include/mysql
lrwxr-xr-x 1 pupeno admin 36 21 Jun 15:18 /usr/local/include/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql
en lugar de
/usr/local/Cellar/mysql/5.6.12/include
Dicho esto, arreglé manualmente el enlace simbólico y la compilación falló. Así que estoy atascado.
Esto también pareció funcionar para mí. Obliga a la gema a compilar contra 5.6.10.
bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
Respuesta relacionada: https://.com/a/9360181
La respuesta principal aquí es obsoleta ... los cerveceros han arreglado mysql:
brew update
brew upgrade mysql
gem install mysql2
Esto actualizará mysql a 5.6.13, que parece funcionar bien con la gema mysql2 en OSX.
Recomendaría esta respuesta en su lugar: la gema mysql2 no se compila con MySQL 5.6.12 en OS X con Homebrew
El problema es con la configuración del compilador en la versión de Homebrew de MySql. Respuesta original encontrada aquí: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html
Tuve el mismo problema, me las arreglé para solucionarlo. Hice muchas cosas, y no sé con certeza qué fue, pero parece que ir a MySQL 5.6.10 ha funcionado.
Desinstalar MySQL 5.6.12:
brew unlink mysql
brew uninstall mysql
Ir al directorio de homebrew:
cd /usr/local
Vaya a la versión 5.6.10 (puede encontrar una lista de versiones ejecutando brew versions mysql
:
git checkout 48f7e86 Library/Formula/mysql.rb
Luego instale mysql de nuevo:
brew install mysql
Y ahora gem install mysql2
funciona para mí.
También instalé mysql desde la fuente ( brew install mysql --build-from-source
), pero eso no lo resolvió, pero podría ser parte de la solución.
sólo ;)
gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config