web-dev-qa-db-de.com

Bibliothek nicht geladen: libmysqlclient.16.dylib-Fehler beim Ausführen von 'Rails-Server' unter OS X 10.6 mit mysql2 gem

Ich habe seit einiger Zeit damit zu kämpfen.

Ich habe Rails 3, gem, mysql auf meiner Snow Leopard-Maschine installiert. Alles lief gut, bis ich mein erstes Projekt erstellte und versuchte zu laufen 

Rails server

Nach dem Ausführen bekomme ich:

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$ 

Soweit ich das beurteilen kann, liegt das Problem bei dem mysql2 gem. MySQL scheint gut zu laufen und mein Gemfile verweist auf mysql2.

Der Fehler erwähnt

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

Und doch 

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 ist da !?

Wenn ich den alten Mysql-Edelstein benutze, bootet WEBrick gut. Aber das ist nicht ideal, oder?

Ich habe alles versucht, was Google mir geben kann! Jede Hilfe sehr geschätzt.

204
Jonty Brook

Ich konnte nie eine dieser Antworten bekommen, um für mich zu arbeiten, aber dies ist der Befehl, den ich verwendet habe, damit es für mich funktioniert. Auf diese Weise müssen Sie install_name_tool nicht jedes Mal verwenden, wenn Sie Ihr mysql aktualisieren 

Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
392
bloveless

Ich habe das irgendwann gelöst! 

Ich habe Ruby und Rails unter RVM neu installiert. Ich verwende Ruby Version 1.9.2-p136.

Nach der Neuinstallation unter rvm war dieser Fehler immer noch vorhanden. 

Am Ende bestand der magische Befehl, der gelöst wurde:

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

Hoffe das hilft jemand anderem!

93
Jonty Brook

Dieser Fix hat für mich sehr gut funktioniert:

Fügen Sie folgendes zu ~/.profile hinzu

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/

88
nduplessis

Für mich war das nur, weil ich mysql aufgerüstet hatte, aber den mysql2-gem nicht aktualisiert hatte - eine Neuinstallation des gem wird das Problem beheben ...

gem pristine mysql2

39
Luke

Ich habe das gleiche Problem. Offenbar kann die libmysqlclient-Bibliothek nicht gefunden werden. Eine vorübergehende Lösung, die für mich funktioniert hat, ist folgende:

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

Ich bin nicht sicher, wo die Konfiguration den Ladepfad angibt oder worauf sie eingestellt ist, aber meine MySQL-Installation schien nicht darin zu sein. Ich werde erneut posten, wenn ich eine dauerhafte Lösung finde.

Edit: Eigentlich this fix scheint das Problem genauer zu lösen.

26
Ogapo

Fügen Sie unten Ihren ~/.bash_profile hinzu:

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

Das hat bei mir funktioniert

24
DV Dasari

In OSX El Capitan-Update, wenn Sie dies tun:

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

es wirft einen Fehler wie 

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

Um dies zu vermeiden, suchen Sie zunächst libmysqlclient.18.dylib mit dem Befehl 

User$ locate libmysqlclient.18.dylib

In meinem Fall wurde /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib zurückgegeben.

Anstelle von usr/lib/ erstellen wir einen Symlink zu usr/local/lib/ wie folgt:

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

Weitere Details: https://forums.developer.Apple.com/thread/7935

17
Sony Mathew

folgende Zeilen funktionieren für mich. Ich benutze Mac 10.7.2.

Sudan ls -us /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

13
S. Russell

Ich bin gerade auf dieses Problem gestoßen. Alles was ich tun musste, war mysql2 gem zu deinstallieren und neu zu installieren. Hoffe, das funktioniert für andere Leute

10
Anh Pham

So hat es für mich funktioniert:

Ich habe den folgenden Befehl ausgeführt
Sudo install_name_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

Meine Umgebungen:
$ Rails -v Rails 3.0.6

$ mysql --version
mysql Ver 14.14 Distrib 5.5.11 für osx10.6 (i386) mit readline 5.1

$ Ruby -v 
Ruby 1.9.2p180 (Rev. 30909 von 2011-02-18) [x86_64-darwin10.7.0]

Hoffe das hilft jemandem. 

4
DV Dasari

bundle install mysql --force hat mir geholfen. Abhängigkeiten, die durch brew uninstall mysql verschwunden waren, wurden neu installiert.

3
Aram

Bei der Arbeit mit Django hatte ich dieses Problem. Ich installiere brew, um viele meiner Open Source-Programme zu installieren. Ich musste Folgendes tun, da ich brew zur Installation von mysql verwendet habe:

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

Stellen Sie sicher, dass Sie Ihre Version der Bibliotheken verwenden!

3
Addiction2Code

Ich habe dieses Problem gelöst, indem ich mein Gemset für mein aktuelles Projekt gelöscht und es neu erstellt und die Bundle-Installation erneut ausgeführt habe. Ich denke, ich habe es verursacht, indem ich eine neuere Version von Mysql installiert habe.

3
Ryan

hi es funktionierte für mich vom empfohlenen Link von 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

ich musste nur zu meiner Version von mysql wechseln, im Befehl Danke

3
MaKo

Danke, Ogapo! Das Exportieren dieses Alias ​​funktionierte für mich und ich folgte dem Link. In meinem Fall war das mysql2.bundle in /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle Ich habe das install_name_tool angepasst, um dieses Paket zu ändern, anstatt eines in ~/.rvm. Das funktioniert so, wie es gemacht werden sollte.

So jetzt:

   $ 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)
3
tobinjim

Ich fand immer noch, dass mit den oben genannten Lösungen es nicht funktioniert (zum Beispiel) mit dem Rails-Plugin für TextMate. Ich habe einen ähnlichen Fehler erhalten (beim Abrufen des Datenbankschemas).

Was ist also, offenes Terminal:

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

Ersetzen Sie mysql-5.5.8-osx10.6-x86_64 durch Ihren eigenen Pfad (oder mysql).

Dadurch wird ein Symbol mit der Bibliothek verknüpft, jetzt läuft Rails von der Befehlszeile aus, sowie TextMate-Plugins wie Ruby-on-Rails-tmbundle.

Um es klar zu sagen: Dies behebt auch den Fehler, den Sie beim Starten des Rails-Servers erhalten. 

2
Roger

Jonty, ich habe auch damit zu kämpfen.

Ich glaube, hier gibt es einen Hinweis:

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)

Beachten Sie, dass der Weg zum Dylib ziemlich kurz ist.

Ich versuche herauszufinden, wo die Anweisungen zur Installation des Edelsteins vom Dylib-Pfad abgehen, aber es geht langsam voran, da ich selbst nie einen Edelstein gebaut habe.

Ich werde mehr posten, wenn ich mehr finde!

2
tobinjim

Ich hatte vor ein paar Tagen genau dasselbe Problem. Ich habe es schließlich geschafft, es zu lösen. Ich bin nicht ganz sicher wie, aber ich erzähle Ihnen, was ich trotzdem getan habe. Vielleicht hilft es dir.

Ich habe mit dem Herunterladen von RVM begonnen. Wenn Sie es noch nicht verwenden, empfehle ich es sehr. Im Wesentlichen wird eine Sandbox für eine neue separate Installation von Ruby, RoR und RubyGems erstellt. Sie können sogar mehrere Installationen gleichzeitig ausführen und sofort zu einer anderen wechseln. Es wirkt wie ein Zauber.

Warum ist das nützlich? Sie sollten sich nicht mit der standardmäßigen Ruby-Installation in OS X beschäftigen. Das System hängt davon ab. Am besten lassen Sie die standardmäßige Ruby- und RoR-Installation allein und erstellen mit RVM eine neue, die Sie für Ihre eigene Entwicklung verwenden können.

Nachdem ich meine separate Ruby-Installation erstellt hatte, habe ich RoR, RubyGems und Mysql installiert und es hat funktioniert. Die genauen Schritte, die ich unternommen habe, finden Sie in meiner Frage: Installieren von Rails, MySQL usw. Alles läuft schief

Nochmals: Ich weiß nicht genau, ob das Ihr Problem lösen wird. Aber es hat sicherlich den Trick für mich getan, und die Verwendung von RVM ist auf jeden Fall sehr empfehlenswert.

2
Rits

Dies ist normalerweise der Fall, wenn Sie mysql aktualisieren. Der installierte mysql2-Gem, der auf den alten mysql-Bibliotheken basiert, kann mit neuen Bibliotheken nicht arbeiten. Sie müssen es nur neu installieren.

Deinstallieren Sie mysql2 mit gem uninstall mysql2. Dann installiere es mit gem install mysql2

2
longkt90

Ich habe es gelöst, indem ich die .rvmrc-Datei in meinem Projektordner erstellt habe.

rvm use <yourrubie>

dann meinen Projektpfad eingeben

cd ~/myprojectpath

dann laufe ich 

bundle install
1
Tomasz Mazur

Meine Version von luvlss 'Befehl:

Mac OSX 10.10.5

MySQL 5.6.27

Passagier 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

Wenn Sie viele verschiedene Links ausprobieren, wie ich es tat, machen Sie ein paar Bereinigungen mit:

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

1
AlexJ

Bei mir musste ich mysql manuell deinstallieren

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

Öffnen Sie ein Terminal und führen Sie Folgendes aus: 

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

Es sollte funktionieren.

0
Slipstream

Wenn Sie OSX verwenden und mysql mit brew installiert haben, können Sie:

brew link mysql

Wenn Sie Probleme mit der Version haben (ich hatte Mysql 5.7, während mein Edelstein 5.6.25 benötigte), können Sie dies tun

brew unlink mysql
brew switch mysql 5.6.25
0
Ariel Cabib