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.