Estoy intentando instalar una aplicación de código abierto rails 3.2.21 que usa la mysql2
gema, pero cuando intento ejecutar el bundle
comando, 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 mysql
que 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 -lssl
Entonces, necesitas instalar
libssl
:brew install openssl
Como 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/include
gem 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 install
un 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 --install
fuente
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 openssl
luegogem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
funcionó 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
export
realmente 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 --force
Resuelve 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 --force
y entonces
gem install mysql2 -v '0.4.10' -- \ --with-ldflags=-L/usr/local/opt/openssl/lib \ --with-cppflags=-I/usr/local/opt/openssl/include
fuente
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 install
Se arreglará
ld: library not found for -lssl error
fuente
Parece que echas de menos los archivos principales necesarios para construir
mysql2
gemassudo apt-get install libsqlite3-dev libmysqlclient-dev -y
libsqlite3-dev
no 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/config
archivo:BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
fuente