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)
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Desde aquí: https://gorails.com/setup/osx/10.14-mojave