rails migraciones ejecutar mysql ruby-on-rails ruby ruby-on-rails-4 mysql2

migraciones - Error al intentar instalar la aplicación con mysql2 gem



mysql en ruby on rails (8)

Estoy tratando de instalar una aplicación de código abierto 3.2.21 que utiliza la gema mysql2 , pero cuando intento ejecutar el bundle commant me sale el siguiente error:

Fetching: mysql2-0.3.18.gem (100%) Building native extensions. This could take a while... p ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. /Users/my_username/.rvm/rubies/ruby-2.1.2/bin/ruby -r ./siteconf20150614-72129-orqsb7.rb extconf.rb checking for ruby/thread.h... yes checking for rb_thread_call_without_gvl() in ruby/thread.h... yes checking for rb_thread_blocking_region()... yes 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/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for mysqld_error.h... yes ----- Don''t 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.6.25/lib ----- creating Makefile make "DESTDIR=" clean make "DESTDIR=" compiling client.c compiling infile.c compiling mysql2_ext.c compiling result.c linking shared-object mysql2/mysql2.bundle ld: warning: directory not found for option ''-L/Users/travis/.sm/pkg/active/lib'' 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/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/mysql2-0.3.18 for inspection. Results logged to /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/extensions/x86

Intenté desinstalar todas las versiones de mysql que instalé a través de homebrew y reinstalarlas, así:

brew uninstall --force mysql && brew install mysql

Luego corriendo:

sudo gem install mysql2

Según lo sugerido por una serie de preguntas similares formuladas aquí, pero aún se produce el mismo error que el anterior.

¿Podría alguien ofrecer orientación sobre cómo poner esto en funcionamiento?


Basado en la solución here

brew install openssl export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

resuelve el problema.


Descubrí que tenía que usar --with-opt-dir=/usr/local/opt .

Específicamente, agregué lo siguiente a mi archivo ~/.bundle/config :

BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"


El registro de errores dice:

ld: library not found for -lssl

Entonces, necesitas instalar libssl :

brew install openssl

Espero eso ayude.


Gracias @mudasobwa por señalarme en la dirección correcta. Resulta que el error fue causado por un archivo openssl desvinculado, por lo que se ejecuta:

brew reinstall openssl && brew link openssl --force

Resuelve el problema. Encontré la solución aquí: OpenSSL, RVM, Brew, error en conflicto


La solución para mí fue instalar las herramientas de línea de comandos de Xcode.

Recientemente había actualizado Xcode a través de la Mac App Store, y cada vez que hago eso, descubro que tengo que reinstalar nuevamente las Herramientas de línea de comandos.

xcode-select --install


Para cualquiera que todavía experimente el problema:

Cuando instala openssl a través de brew, debería recibir el siguiente mensaje:

Apple ha desaprobado el uso de OpenSSL en favor de sus propias bibliotecas TLS y criptográficas

Generalmente no hay consecuencias de esto para usted. Si crea su propio software y requiere esta fórmula, deberá agregar a sus 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í.

Consulte la documentación del paquete para obtener más información.


Prueba esto:

gem install mysql2 -v ''0.5.2'' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

(Actualice la versión según corresponda)