web-dev-qa-db-ja.com

ライブラリがロードされていない:mysql2 gemを使用してOS X 10.6で「Railsサーバー」を実行しようとすると、libmysqlclient.16.dylibエラーが発生する

私はしばらくの間これに苦労してきました。

Snow LeopardマシンにRails 3、gem、mysqlをインストールしました。最初のプロジェクトを作成して実行しようとするまで、すべてうまくいった

Rails server

これを実行すると、次のようになります:

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$ 

私の知る限り、問題はmysql2 gemにあります。 MySQLは正常に動作しているようで、私のGemfileはmysql2を参照し、私のdatabase.ymlファイルも問題ないようです。

エラーの言及

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

そしてまだ

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があります!?

古いmysql gemを使用すると、WEBrickは正常に起動します。しかし、それは理想的ではありませんか?

私はグーグルが私に与えることができるすべてを試しました!助けていただければ幸いです。

206
Jonty Brook

私はこれらの答えのいずれかを私のために機能させることはできませんでしたが、これは私がそれを私のために機能させるために使用したコマンドです。これにより、mysqlを更新するたびにinstall_name_toolを使用する必要がなくなります。

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

結局、これを解決しました!

RVMでRubyおよびRailsを再インストールしました。 Rubyバージョン1.9.2-p136を使用しています。

Rvmで再インストールした後、このエラーはまだ存在していました。

最終的に、それを解決した魔法のコマンドは次のとおりでした

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

これが他の人の助けになることを願っています!

93
Jonty Brook

この修正は私にとって非常にうまくいきました。

以下を〜/ .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/ =

88
nduplessis

私にとって、これはmysqlをアップグレードしたがmysql2 gemを更新していなかったからです。gemを再インストールすると修正されます...

gem pristine mysql2

39
Luke

同じ問題があります。 libmysqlclientライブラリが見つからないようです。私のために働いた一時的な修正は次のとおりです:

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

Configがロードパスを指定している場所や設定されている内容がわかりませんが、mysqlインストールが含まれていないようです。より恒久的な解決策が見つかった場合は、再度投稿します。

編集:実際には this fixは問題をより正確に解決しているようです。

26
Ogapo

以下を~/.bash_profileに追加します。

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

これは私のために働いた

24
DV Dasari

OSX El Capitanでは、これを行うときに更新します。

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

次のようなエラーがスローされます

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

そのため、これを回避するには、まずコマンドを使用してlibmysqlclient.18.dylibを見つけます

User$ locate libmysqlclient.18.dylib

私の場合、/usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylibを返しました

したがって、usr/lib/の代わりに、次のようにusr/local/lib/へのシンボリックリンクを作成します。

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

詳細: https://forums.developer.Apple.com/thread/7935

17
Sony Mathew

次の行は私のために働く。 Mac 10.7.2を使用しています。

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

13
S. Russell

この問題に出くわしました。 mysql2 gemをアンインストールして再インストールするだけです。これが他の人にも役立つことを願っています

10
Anh Pham

これは私のために働いた方法です:

以下のコマンドを実行しました
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

私の環境:
$ Rails -v Rails 3.0.6

$ mysql --version
mysql Ver 14.14 Distrib 5.5.11、osx10.6(i386)、readline 5.1を使用

$ Ruby -v
Ruby 1.9.2p180(2011-02-18リビジョン30909)[x86_64-darwin10.7.0]

これが誰かを助けることを願っています。

4
DV Dasari

bundle install mysql --forceが助けてくれました。 brew uninstall mysqlの結果としてなくなった依存関係を再インストールしました。

3
Aram

Djangoを使用しているときにこの問題が発生しました。brewname__を使用して多くのオープンソースプログラムをインストールし、brewname__を使用してmysqlname__をインストールしたため、

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

ライブラリのバージョンに必ず置き換えてください!

3
Addiction2Code

現在のプロジェクトのgemsetを削除して再作成し、バンドルインストールを再実行することで、この問題を解決しました。 mysqlの新しいバージョンをインストールしたことが原因だと思います。

3
Ryan

こんにちは、推奨リンクから私のために働いた from 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

コマンドでmysqlのバージョンに変更する必要がありました、ありがとう

3
manuelBetancurt

ありがとう、オガポ!そのエイリアスのエクスポートは私のために働いたので、リンクをたどりました。私の場合、mysql2.bundleは/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundleにありました。 〜/ .rvm内のバンドルではなく、そのバンドルを変更するようにinstall_name_toolを調整し、それが行われるべき方法で動作するようにしました。

だから今:

   $ 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

上記のソリューションでは、(たとえば)TextMateのRailsプラグインでは動作しませんでした。同様のエラーが発生しました(データベーススキーマを取得するとき)。

だから、ターミナルを開いて:

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

mysql-5.5.8-osx10.6-x86_64を独自のパス(またはmysql)に置き換えます。

これにより、libへのシンボルリンクが作成され、コマンドラインからRailsが実行されるようになり、同様にRuby-on-Rails-tmbundle

明確にするために、これはRailsサーバーの起動時に表示されるエラーも修正します。

2
Roger

ジョンティ、私もこれに苦労しています。

ここに手がかりがあると思います:

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)

Dylibへのパスは、ええと、かなり短いことに注意してください。

Gemのインストール手順がdylibのパスから離れているところを見つけようとしていますが、gemを自分で作成したことがないので時間がかかります。

もっと見つけたらもっと投稿します!

2
tobinjim

数日前にまったく同じ問題が発生しました。私は最終的にそれを解決することができました。どのようにすればいいのかよく分かりませんが、とにかく私がしたことをお話しします。たぶんそれはあなたを助けるでしょう。

私はRVMをダウンロードすることから始めました。まだ使用していない場合は、使用することを強くお勧めします。基本的に、Ruby、RoR、RubyGemsの新しい個別インストール用のサンドボックスを作成します。実際、複数のインストールを同時に実行して、すぐに相互に切り替えることができます。それは魅力のように機能します。

なぜこれが便利なのですか? OS XのデフォルトのRubyインストールを台無しにしないでください。システムはそれに依存します。デフォルトのRubyおよびRoRインストールをそのままにして、独自の開発に使用できるRVMを使用して新しいものを作成するのが最善です。

個別のRubyインストールを作成したら、RoR、RubyGems、mysqlをインストールしただけで機能しました。私が行った正確な手順については、私の質問を参照してください: Rails、MySQLなどをインストールすると、すべてがうまくいきません

繰り返しますが、これが問題を解決するかどうかはわかりません。しかし、それは確かに私のためのトリックを行いました、とにかくRVMを使用することは非常にお勧めです。

2
Rits

これは通常、mysqlをアップグレードするときに発生します。古いmysqlライブラリに基づいて構築されたインストール済みmysql2 gemは、新しいライブラリでは機能しません。再インストールするだけです。

gem uninstall mysql2でmysql2をアンインストールします。次に、gem install mysql2でインストールします

2
longkt90

次のプロジェクトフォルダーに.rvmrcファイルを作成して解決しました。

rvm use <yourrubie>

次に、プロジェクトのパスを入力します

cd ~/myprojectpath

それから私は走る

bundle install
1
Tomasz Mazur

Luvlssのコマンドの私のバージョン:

Mac OSX 10.10.5

MySQL 5.6.27

乗客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

私がやったように、たくさんの異なるリンクを試している場合は、次のようなクリーンアップを行ってください。

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

1
AlexJ

私にとっては、mysqlを手動でアンインストールする必要がありました

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

Terminalを開き、次を実行します。

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

動作するはずです。

0
Slipstream

OSXを使用していて、brewを使用してmysqlをインストールした場合、次のことができます。

brew link mysql

バージョンに問題がある場合(gemに5.6.25が必要なときにmysql 5.7を実行していました)、次のことができます。

brew unlink mysql
brew switch mysql 5.6.25
0
Ariel Cabib