Estoy intentando instalar una aplicación de código abierto rails 3.2.21 que usa la mysql2gema, pero cuando intento ejecutar el bundlecomando, aparece 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 mysqlque instalé a través de Homebrew y reinstalarlas, así:
brew uninstall --force mysql && brew install mysql
Luego corriendo:
sudo gem install mysql2
Como lo sugieren una serie de preguntas similares formuladas aquí, pero aún así, el resultado es el mismo error que el anterior.
¿Alguien podría ofrecer orientación sobre cómo poner esto en marcha?
mysql
ruby-on-rails
ruby
ruby-on-rails-4
mysql2
zenvelope
fuente
fuente

Respuestas:
El registro de errores dice:
ld: library not found for -lsslEntonces, necesitas instalar
libssl:brew install opensslComo se señaló en los comentarios, es posible que sea necesario exportar la ruta a la biblioteca.
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/fuente
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/Para cualquiera que siga experimentando el problema:
Cuando instale openssl a través de brew, debería recibir el siguiente mensaje:
Puede configurar 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.
fuente
gem install, lo siguiente funciona:gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/includegem install, la mía es parabundle install. ¿Qué problema está experimentando exactamente? ¿Puede publicar el error? La solución que publiqué todavía me funciona.bundle installun repositorio que depende de mysql. La solución de @AlessandroBerardi no funcionó para mí; @niels 'lo hizo. : /bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"La solución para mí fue instalar Xcode Command Line Tools.
Recientemente actualicé Xcode a través de la Mac App Store, y cada vez que lo hago, descubro que tengo que reinstalar las herramientas de línea de comandos nuevamente.
xcode-select --installfuente
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)
fuente
brew install opensslluegogem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/includefuncionó para mí, ¡Gracias!Basado en la solución aquí
brew install openssl export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/resuelve el problema.
fuente
exportrealmente ayuda. incluso con openssl existente, falta la ruta.Gracias @mudasobwa por señalarme en la dirección correcta. Resulta que el error fue causado por un archivo openssl desvinculado, por lo que ejecuta:
brew reinstall openssl && brew link openssl --forceResuelve el problema. Encontré la solución aquí: OpenSSL, RVM, Brew, error conflictivo
fuente
La combinación de comandos me lo resolvió. Estoy en Mojave.
brew reinstall openssl && brew link openssl --forcey entonces
gem install mysql2 -v '0.4.10' -- \ --with-ldflags=-L/usr/local/opt/openssl/lib \ --with-cppflags=-I/usr/local/opt/openssl/includefuente
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
fuente
Después de la actualización de Homebrew ([email protected]) hay una nueva ruta para las bibliotecas, por lo que puede usar:
bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl) bundle installSe arreglará
ld: library not found for -lssl errorfuente
Parece que echas de menos los archivos principales necesarios para construir
mysql2gemassudo apt-get install libsqlite3-dev libmysqlclient-dev -ylibsqlite3-devno es obligatorio, pero instálelo ya que es la base de datos de rieles predeterminada.fuente
Encontré que tenía que usar
--with-opt-dir=/usr/local/opt.Específicamente, agregué lo siguiente a mi
~/.bundle/configarchivo:BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"fuente