Bibliothèque non chargée: erreur libmysqlclient.16.dylib lors de la tentative d’exécution de ‘rails server’ sous OS X 10.6 avec mysql2 gem

Je me débat avec ça depuis un certain temps.

J’ai installé Rails 3, gem, mysql sur ma machine Snow Leopard. Tout se passait bien jusqu’à ce que je crée mon premier projet et que j’essaie de courir

rails server 

En cours d’exécution, je reçois:

 jontybrook$ rails server /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError) Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7 from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require' from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require' from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7 from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require' from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28 from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap' from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27 from script/rails:6:in `require' from script/rails:6 jontybrook$ 

Autant que je sache, le problème est lié à la gem mysql2. MySQL semble fonctionner correctement et mon fichier Gemfile fait référence à mysql2, mon fichier database.yml semble également correct.

L’erreur mentionne

 Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 

Et encore

 jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2 jontybrook$ ls client.rb em.rb error.rb mysql2.bundle result.rb 

MySQL2.bundle est là !?

Si j’utilise l’ancien gem mysql, WEBrick démarre bien. Mais ce n’est pas idéal, n’est-ce pas?

J’ai tout essayé sur google! Toute aide très appréciée.

Je n’ai jamais pu obtenir aucune de ces réponses pour travailler pour moi, mais c’est la commande que je faisais pour que cela fonctionne pour moi. De cette façon, vous n’avez pas besoin d’utiliser install_name_tool chaque fois que vous mettez à jour votre mysql

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

J’ai résolu ce problème, éventuellement!

J’ai réinstallé Ruby and Rails sous RVM. J’utilise la version 1.9.2-p136 de Ruby.

Après la réinstallation sous rvm, cette erreur était toujours présente.

En fin de compte, la commande magique qui l’a résolu était:

 sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 

J’espère que ceci aide quelqu’un d’autre!

Ce correctif a très bien fonctionné pour moi:

Ajoutez ce qui suit à votre fichier ~ / .profile

 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH 

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/

Pour moi, c’était juste parce que j’avais mis à jour mysql mais que je n’avais pas mis à jour la gem mysql2 – une réinstallation du gem résoudrait le problème …

gem pristine mysql2

J’ai le même problème. Il semble impossible de trouver la bibliothèque libmysqlclient. Un correctif temporaire qui a fonctionné pour moi est le suivant:

 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/ 

Je ne suis pas sûr de savoir où la configuration spécifie le chemin de chargement ou ce qu’elle a défini, mais mon installation mysql ne semblait pas y figurer. Je posterai à nouveau si je trouve une solution plus permanente.

Edit: En fait, cette correction semble résoudre plus précisément le problème.

Ajoutez le ci-dessous à votre ~/.bash_profile :

 export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH 

Cela a fonctionné pour moi

Dans OSX El Capitan mise à jour lorsque vous faites cela:

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

il jette une erreur comme

 ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted 

Donc, pour éviter cela, vous pouvez d’abord localiser libmysqlclient.18.dylib utilisant la commande

 User$ locate libmysqlclient.18.dylib 

Dans mon cas, il a renvoyé /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

Donc, au lieu de usr/lib/ nous créerons un lien symbolique vers usr/local/lib/ comme ceci:

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

Plus de détails: https://forums.developer.apple.com/thread/7935

les lignes suivantes fonctionnent pour moi. J’utilise Mac 10.7.2.

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

Juste couru dans ce problème. Tout ce que j’ai à faire est de désinstaller mysql2 gem et de le réinstaller. J’espère que cela fonctionne pour d’autres personnes

Voilà comment cela a fonctionné pour moi:

J’ai couru la commande ci-dessous
sudo nom_installation_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~ / .rvm / gems / ruby-1.9.2-p180 / gems / mysql2-0.2.7 / lib / mysql2 / mysql2.bundle

Mes environnements:
$ rails -v Rails 3.0.6

$ mysql –version
mysql Ver 14.14 Dissortingb 5.5.11, pour osx10.6 (i386) en utilisant readline 5.1

$ ruby ​​-v
rbuy 1.9.2p180 (2011-02-18 révision 30909) [x86_64-darwin10.7.0]

J’espère que cela aide quelqu’un.

Merci Ogapo! Exporter cet alias a fonctionné pour moi, puis j’ai suivi le lien, et dans mon cas, mysql2.bundle était dans /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle donc J’ai ajusté l’outil install_name_tool pour modifier ce bundle plutôt que celui de ~ / .rvm et j’ai obtenu ce résultat comme il se doit.

Alors maintenant:

  $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7) /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1) 

salut il a fonctionné pour moi du lien recommandé de Fredy Andersen

 sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 

juste eu à changer à ma version de mysql, dans la commande, merci

J’ai résolu ce problème en supprimant mon gemset pour mon projet en cours et en le recréant et en relançant l’installation du bundle. Je pense que je l’ai provoqué en installant une nouvelle version de mysql.

J’ai eu ce problème en travaillant avec Django, j’utilise brew pour installer beaucoup de mes programmes Open Source et je devais faire ce qui suit depuis que j’ai utilisé brew pour installer mysql :

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

Assurez-vous de remplacer votre version des bibliothèques!

bundle install mysql --force m’a aidé. Il a réinstallé les dépendances qui résultaient de la brew uninstall mysql .

Jonty, j’ai du mal avec ça aussi.

Je pense qu’il y a un indice ici:

 otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7) libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1) 

Remarquez que le chemin vers le dylib est plutôt court?

J’essaie de savoir où les instructions d’installation de gemme quittent le chemin du dylib, mais c’est lent car je n’ai jamais construit de gem moi-même.

Je posterai plus si je trouve plus!

J’ai eu exactement le même problème il y a quelques jours. J’ai finalement réussi à le résoudre. Je ne sais pas trop comment, mais je vais vous dire ce que j’ai fait de toute façon. Peut-être que ça va vous aider.

J’ai commencé par télécharger RVM. Si vous ne l’utilisez pas encore, je vous le recommande vivement. Il crée essentiellement un bac à sable pour une nouvelle installation séparée de Ruby, RoR et RubyGems. En fait, vous pouvez avoir plusieurs installations simultanément et basculer instantanément l’une sur l’autre. Il fonctionne comme un charme.

Pourquoi est-ce utile? Parce que vous ne devriez pas jouer avec l’installation par défaut de Ruby dans OS X. Le système en dépend. Il est préférable de laisser l’installation Ruby et RoR par défaut seule et d’en créer une nouvelle à l’aide de RVM, que vous pouvez utiliser pour votre propre développement.

Une fois que j’ai créé mon installation Ruby séparée, je viens d’installer RoR, RubyGems et mysql, et cela a fonctionné. Pour les étapes exactes que j’ai sockets, consultez ma question: Installer Rails, MySQL, etc.

Encore une fois: je ne sais pas avec certitude que cela résoudra votre problème. Mais cela a certainement fait l’affaire et, dans tous les cas, il est fortement recommandé d’utiliser RVM.

J’ai toujours trouvé qu’avec les solutions ci-dessus, cela ne fonctionnait pas (par exemple) avec le plug-in Rails pour TextMate. J’ai eu une erreur similaire (lors de la récupération du schéma de firebase database).

Alors qu’est-ce que c’est, terminal ouvert:

 cd /usr/local/lib sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib . 

Remplacez mysql-5.5.8-osx10.6-x86_64 par votre propre chemin (ou mysql).

Cela fait un lien de symbole vers la lib, maintenant les rails s’exécutent depuis la ligne de commande, ainsi que les plug-ins TextMate comme ruby-on-rails-tmbundle .

Pour être clair: cela corrige également l’erreur que vous obtenez lors du démarrage de rails serveur.

Cela se produit généralement lorsque vous mettez à jour mysql. Le gem mysql2 installé sur les anciennes librairies mysql ne peut pas fonctionner avec de nouvelles libs. Il suffit de le réinstaller.

Désinstallez mysql2 avec gem uninstall mysql2 . Puis installez-le avec gem install mysql2

Je l’ai résolu en créant un fichier .rvmrc dans mon dossier de projet contenant:

 rvm use  

puis entrer dans le chemin de mon projet

 cd ~/myprojectpath 

alors je cours

 bundle install 

Ma version de la commande de luvlss:

Mac OSX 10.10.5

MySQL 5.6.27

Passager 5.0.21

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

Si vous essayez des tas de liens différents, comme je l’ai fait, faites du nettoyage avec:

sudo unlink /usr/lib/libmysqlclient.18.dylib

Si vous utilisez OSX et que vous avez installé mysql avec brew, vous pouvez:

 brew link mysql 

Si vous rencontrez des problèmes avec la version (avec mysql 5.7 en cours d’exécution alors que ma gem est nécessaire 5.6.25), vous pouvez

 brew unlink mysql brew switch mysql 5.6.25 

Ouvrez un terminal et exécutez les opérations suivantes:

 export PATH=$PATH:/usr/local/mysql/bin 

Ça devrait marcher.

Pour moi, je devais désinstaller manuellement mysql

 brew uninstall mysql rm -rf /usr/local/var/mysql brew install mysql