sierra rails mac mysql ruby-on-rails ruby macos

mac - rails+MySQL en OSX: biblioteca no cargada: libmysqlclient.18.dylib



ruby mac os sierra (22)

Estoy comenzando con Ruby (y rails). Hice la configuración de acuerdo con http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems, usando rvm . Tengo todo funcionando bien con sqlite.

Ahora me gustaría tratar de convertir cosas a MySQL, ya que es con eso que hago la mayor parte de mi desarrollo. En mi Gemfile he reemplazado sqlite con mysql2:

group :development, :test do # gem ''sqlite3'', ''1.3.5'' gem ''mysql2'' gem ''rspec-rails'', ''2.9.0'' end

Pero cuando trato de crear la base de datos para los rieles en MySQL obtengo:

$ rake db:create --trace rake aborted! dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

He visto otras publicaciones recomendando la reinstalación de MySQL a través de homebrew (la mía se instaló a través de un DMG descargable), pero preferiría no hacerlo porque ya tengo otras bases de datos para otros proyectos que no son ruby.

De hecho, tengo el archivo que Rails está buscando; está instalado en /usr/local/mysql/lib/libmysqlclient.18.dylib . ¿Cuál es la mejor manera de decirle a Rails cómo localizarlo?


Confirmo que el parche de Abhishek funciona.

funciona para Yosemite, también.

nota: en lugar de vincular a una versión particular de mysql, use el hecho de que mysql ya construyó el enlace simbólico:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

esta solución funciona para Xcode y C API.


Después de buscar en Google y probar todo lo anterior ... lo único que resolvió mi problema fue este comando:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Estoy usando un macbook pro, OSX 10 El Capitan. Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel Versión 15.6.0: jue 23 de jun. 18:25:34 PDT 2016; XXX: xnu-3248.60.10 ~ 1 / RELEASE_X86_64 x86_64 Perl: v5.18.2 Mysql: 5.6.19


En El Capitán obtuve ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

En El Capitan /usr/lib/ ahora tiene un indicador restringido y no se puede escribir sin desactivar la seguridad, así que simplemente coloco el enlace en /usr/local/lib lugar.

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

El servidor Rails está funcionando bien de nuevo.


En Mac Sierra si usa Homebrew, haga:

sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


Estaba trabajando con el comando rails g model y obtuve este error:

Library not loaded: libmysqlclient.18.dylib

Lo intenté y funcionó para mí. Estaba usando Mavericks 10.9.5

sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

¡Gracias!

Ahora estoy usando Yosemite 10.10.5 y obtuve el mismo error, así que acabo de ejecutar este comando en el terminal y se arregló con éxito.

$ sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

también puedes probar:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Ambos funcionan bien para mí. Espero que pueda ser útil!


Esto funciona para mí:

ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


Estoy usando Rails REE (2.3.4) para un sistema heredado que tenemos. Después de actualizar a El Capitán, la ejecución del script / consola generó un error y mi aplicación ya no se iniciará (usando pow):

$ script/console Loading development environment (Rails 2.3.4) /blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle)


De este mismo hilo, arriba, determiné que necesitaba emitir este comando en la terminal:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Este comando produjo un error: "ln: /usr/lib/libmysqlclient.18.dylib: operación no permitida". Nunca he visto ese error antes.

Después de investigar un poco, encontré este artículo: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html y seguí el instrucciones para desactivar SIP (nueva protección de integridad del sistema de El Capitan). Después de desactivar SIP y después de reiniciar, el comando ln funcionó bien. Luego apagué el SIP. Ahora todo está bien. Mi aplicación se ejecuta nuevamente usando pow y no hay error al ejecutar el script / consola. Espero que esto te ayude.


La solución es bastante fácil; Agregue la ruta de la biblioteca en su archivo ~ / .bash_profile o ~ / .profile:

MYSQL=/usr/local/mysql/bin export PATH=$PATH:$MYSQL export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

Si todavía no funciona (este trabajo para mí):

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Hay muchos blogs con install_name_tool , que no me funcionarán porque estoy en OSX Lion:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/indexer sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/search


Lo único que funcionó para mí es:

sudo install_name_tool -change libmysqlclient.18.dylib / /usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib / /Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle

Reemplace las rutas de mysql y gemas para que se ajusten a su sistema.


Me encontré con este problema después de una eliminación completa y luego una nueva instalación de MySQL. Específicamente:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

Ni siquiera había tocado mi aplicación Rails.

Reinstalar la gema mysql2 resolvió este problema.

$ gem uninstall mysql2 $ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)

[MySQL 5.7.10, Rails 4.0.0, Ruby 2.0.0, Mac OS X Yosemite 10.10]


Mi problema con la carga de ese archivo de paquete fue un mal enlace simbólico. Por lo tanto, verifique el enlace y reemplácelo por uno nuevo si es necesario. Todo encajó en su lugar en ese punto. No estoy seguro de cómo sucedió eso, pero lo hizo. Primera vez que ocurrió un error de sintaxis así.


Obtuve este problema "Biblioteca no cargada: libmysqlclient.18.dylib" al importar MySQLdb de MySQL para python3 :

Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/MySQLdb/__init__.py", line 19, in <module> import _mysql ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.egg/_mysql.cpython-35m-darwin.so Reason: image not found

La solución funciona para mí: Mac OS X 10.11.1 Python3.5

Edit ~/.bash_profile: export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH" export PATH="/opt/local/bin:/opt/local/sbin:$PATH" export PATH="/usr/local/mysql/bin:$PATH" export PATH="/usr/local/mysql/lib:$PATH" sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


Para MySql 5.6 instalado desde DMG en Mavericks

sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


Para aquellos que usan brew. Solo enlace su versión de mysql con la opción "--force".

brew link mysql56 --force


Para estar seguro de qué enlace simbólico es necesario (depende de la versión de mysql y de la versión del sistema operativo):

$ locate libmysqlclient.18.dylib /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

y entonces :

ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


Si bien el título de esta pregunta describe con precisión el problema que encontré, las circunstancias son diferentes de las descritas en las respuestas anteriores, y también la solución.

En mi caso (El Capitan, mysql instalado a través de homebrew), una brew update && brew upgrade provocó que el paquete mysql se actualizara a 5.7.10 (desde 5.6.x).

La actualización provocó que libmysqlclient.18.dylib se reemplazara por libmysqlclient.20.dylib , pero la gema mysql2 todavía confiaba en la primera.

Para solucionar el problema que hice: gem uninstall mysql2 && gem install mysql2

Tenga en cuenta que pueden ocurrir problemas similares con diferentes bibliotecas de homebrew-managed ( vea mi propia respuesta a esto, por ejemplo )


Si está utilizando Bitnami RubyStack y se encontró con el problema similar. Prueba este

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


Si está utilizando MySQL instalado desde HomeBrew en El Capitan, entonces debe vincularlo de la siguiente manera:

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


utilízalo desde tu línea de comando:

sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

intentado en pocas computadoras con Maverick siempre funciona


gem uninstall -aIx

y

bundle install

trabajó para mi.


sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Eso funcionó para mí. Instalé MySQL desde un archivo dmg.


sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Trabajó para mi. Todos los similares no lo hicieron.