rails - No se puede instalar la gema mysql2 en macOS Sierra
rbenv (7)
Cuando instale openssl vía brew, debería recibir el siguiente mensaje:
Apple ha desaprobado el uso de OpenSSL a favor de sus propias bibliotecas de cifrado y TLS
En general, no hay consecuencias de esto para usted. Si construyes tu propio software y requiere esta fórmula, necesitarás agregar a tus variables de compilación:
LDFLAGS: -L / usr / local / opt / openssl / lib
CPPFLAGS: -I / usr / local / opt / openssl / include
PKG_CONFIG_PATH: / usr / local / opt / openssl / lib / pkgconfig
Puede establecer estos indicadores de compilación (para la aplicación local) ejecutando lo siguiente:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Esto funcionó para mí.
Vea la documentación del paquete para más información.
Estoy configurando mi entorno de desarrollo en el nuevo macOS Sierra .
Antes que nada, instalé Rbenv , Ruby (2.3.1) , Homebrew y la última versión de MySQL (5.7.15) .
$ brew install mysql
$ mysql.server start
Ok, MySQL fue inicializado. Es hora de instalar la gema mysql2 ...
$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
Pero no funcionó. 😞
Building native extensions with: ''--with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config''
This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
/Users/macuser/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160921-16853-x1boio.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/Cellar/mysql/5.7.15/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Dont know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.7.15/lib
-----
creating Makefile
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/mkmf.log
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR=" clean
current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1
make failed, exit code 2
Gem files will remain installed in /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4 for inspection.
Results logged to /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/gem_make.out
Simplemente tuve el mismo problema, probé todas las soluciones enumeradas anteriormente y luego comencé a golpear mi cabeza contra el teclado durante un par de horas.
Luego pensé en intentar instalar / reinstalar las herramientas de línea de comandos de Xcode:
xcode-select --install
Una vez que hice eso, la gema mysql2 se instaló sin problemas. ¡Espero que sí lo haga!
En primer lugar, debería intentar 2 respuestas aquí. Si instaló openssl pero todavía no funciona. Deberías intentar actualizar la referencia de gemas. A tiene el mismo problema y funcionó para mí.
gem source -r https://rubygems.org/
gem source -a https://rubygems.org/
Estoy aquí para compartir mi solución, ya que las otras respuestas no funcionaron.
Para mi entorno, necesito MySQL 5.6, así que tuve que usar:
brew install mysql56
lugar de brew install mysql
El paquete que instala la gema mysql2 sigue fallando, hasta que:
brew link mysql56
También corrí después:
mysql.server start
El último paso puede ser innecesario, pero por las dudas.
Intenta instalar xcode-select --install
Así que me encontré con este problema similar y para mí resultó ser una versión de ruby incorrecta y una versión incompatible de MySQL. Uso ruby 2.3 en la mayoría de mis proyectos, pero heredé un proyecto 2.1. Cambiar a rvm para usar 2.1 me ayudó un poco más.
Entonces encontré esto: https://github.com/brianmario/mysql2/issues/603 que decía que tenía que usar la versión de gema mysql2 mayor que 0.3.17 con MySQL versión 5.7
Se actualizó la gema a 0.3.17 y se disparó hacia arriba. Espero que esto ayude a alguien.
Casi el mismo escenario que @Caio Tarifa, Ruby 2.3.3, mysql 5.6 y mysql2. Intenté un par de soluciones anteriores y finalmente lo hice funcionar con el enfoque de @kylekeesling.
Primero, intenté con la solución 1 de @spickermann:
brew reinstall openssl && brew link openssl --force
No pasó nada, se muestra el mismo error.
Segundo, una solución probada por @Alessandro Berardi:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Esto tiene errores diferentes pero más, ya que sobrescribe la configuración de la extensión de gem para que falle la instalación de la extensión de gem.
Finalmente, probé la solución @kylekeesling:
xcode-select --install
Se soluciona el problema de la gema de mysql, así como el nikogiri. Como ya instalé Xcode, en mi caso reinstalaré las herramientas de línea de comandos de Xcode.