mysql2gemを使用してアプリをインストールしようとしたときにエラーが発生しました


84

mysql2gemを使用するオープンソースのRails3.2.21アプリケーションをインストールしようとしていますが、bundlecommantを実行しようとすると、次のエラーが発生します。

Fetching: mysql2-0.3.18.gem (100%)
Building native extensions.  This could take a while...
p
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    /Users/my_username/.rvm/rubies/ruby-2.1.2/bin/ruby -r ./siteconf20150614-72129-orqsb7.rb extconf.rb
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.6.25/lib
-----
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
linking shared-object mysql2/mysql2.bundle
ld: warning: directory not found for option '-L/Users/travis/.sm/pkg/active/lib'
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/gems/mysql2-0.3.18 for inspection.
Results logged to /Users/my_username/.rvm/rubies/ruby-2.1.2/lib/ruby/gems/2.1.0/extensions/x86

私はmysqlhomebrewを介してインストールしたすべてのバージョンをアンインストールし、次のように再インストールしてみました。

brew uninstall --force mysql && brew install mysql

次に実行します:

sudo gem install mysql2

ここで尋ねられた多くの同様の質問によって示唆されているように、それでも上記と同じエラーが発生します。

誰かがこれを起動して実行する方法についてのガイダンスを提供できますか?


「brewdoctor」を実行して、エラーがないか確認してください。その場合は、指示に従って再試行してください。
KM 2015年

gemの依存関係をインストールしましたか?github.com/brianmario/mysql2#general-instructions
lcguida

@ValAsensio、私はそこであなたに心から同意しません。可能であれば、開発では常に本番データベースを使用するようにしてください。私は開発でsqliteを使用したことはなく、一緒に仕事をしている人もいません。
niels 2016年

@niels。はい。私はこれに同意します。「開発では常に本番データベースを使用するようにしてください」私のこの古代のコメントは役に立たなかった。削除しました。
Elvn 2016年

回答:


55

エラーログには次のように記載されています。

ld: library not found for -lssl

だから、あなたはインストールする必要がありますlibssl

brew install openssl

コメントで指摘されているように、パスをライブラリにエクスポートする必要があるかもしれません。

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

27
:、十分その後、このようにそれをエクスポートするための一つの必要性はなかったことexport LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
Gilg彼

export LIBRARY_PATH = $ LIBRARY_PATH:/ usr / local / opt / openssl / lib / `長い間試してみたところ、うまくいきました。THX!!
Abhi

162

まだ問題が発生している人の場合:

brewを介してopensslをインストールすると、次のメッセージが表示されます。

Appleは、独自のTLSおよび暗号ライブラリを優先してOpenSSLの使用を廃止しました

通常、これによる影響はありません。独自のソフトウェアをビルドし、それがこの式を必要とする場合は、ビルド変数に追加する必要があります。

LDFLAGS:-L / usr / local / opt / openssl / lib
CPPFLAGS:-I / usr / local / opt / openssl / include
PKG_CONFIG_PATH:/ usr / local / opt / openssl / lib / pkgconfig

以下を実行することにより、これらのビルドフラグ(ローカルアプリケーション用)を設定できます。

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

これは私のために働いた。

詳細については、バンドラーのドキュメントを参照してください。


79
あなただけ使用したい場合はgem install、次のような作品を: gem install mysql2 -v '0.3.21' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
ニールス

^^^ @ nielsが答えになるはずです... Alessandro'sはSierraでは機能しません(「警告:リンクを拒否します:open ssl ...」->非推奨のopensslシステムと関係があります)
the12

2
@ the12 nielsの解決策はのためのものでありgem install、私のものはのためのものbundle installです。正確にどのような問題が発生していますか?エラーを投稿できますか?私が投稿した解決策はまだ私のために働きます。
アレサンドロベラルディ2016

1
私はbundle installmysqlに依存するリポジトリを探すことから始めました。@AlessandroBerardiのソリューションは私にはうまくいきませんでした。@niels 'はしました。:/
vergenzt 2017年

3
--with-cppflagsは、最新のOSXでは壊れているようです。省略できると思います。bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
ザビエルシェイ

36

私にとっての解決策は、Xcodeコマンドラインツールをインストールすることでした。

最近、Mac App StoreからXcodeを更新しましたが、更新するたびに、コマンドラインツールを再インストールする必要があることがわかりました。

xcode-select --install

36

これを試して:

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

(必要に応じてバージョンを更新してください)


1
SSLライブラリが見つからなかったことを考えると、これは正しいアプローチであり、私にとっては問題なく機能しました。
TehJabbit

2
まずインストールしbrew install openssl、その後gem install mysql2 -v '0.4.10' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include 、私のために感謝を働きました!
TouseefMurtaza19年

1
@TouseefMurtazaあなたの答えは私のために働いた-ありがとう!
ジャレド

👋親愛なる未来の自己。これで、この回答を2回読んだことになります。これはあなたの状況に合わせて解決されます!さあ、出て行って、あなたの時間をコードと交換し、あなたのコードをお金と交換してください。
DaveWoodall.com

28

ここでの解決策に基づく

brew install openssl

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

問題を解決しました。


1
export本当に役立ちます。既存のopensslを使用しても、パスがありません。
YakobUbaidi20年

10

私を正しい方向に向けてくれた@mudasobwaに感謝します。エラーの原因はリンクされていないopensslファイルであることが判明したため、次のコマンドを実行します。

brew reinstall openssl && brew link openssl --force 

問題を解決しました。私はここで解決策を見つけました:OpenSSL、RVM、Brew、競合するエラー



2

コマンドの組み合わせで解決しました。私はモハベにいます。

brew reinstall openssl && brew link openssl --force

その後

gem install mysql2 -v '0.4.10' -- \
  --with-ldflags=-L/usr/local/opt/openssl/lib \
  --with-cppflags=-I/usr/local/opt/openssl/include

2

Homebrewの更新(openssl@1.1)の後、libsの新しいパスがあるため、次を使用できます。

bundle config build.mysql2 --with-opt-dir=$(brew --prefix openssl)
bundle install

修正します ld: library not found for -lssl error


1

mysql2gemのビルドに必要なメインファイルが不足しているようです

sudo apt-get install libsqlite3-dev libmysqlclient-dev -y

libsqlite3-dev 必須ではありませんが、デフォルトのRailsDBであるためインストールしてください。


-1

を使用する必要があることがわかりました--with-opt-dir=/usr/local/opt

具体的には、~/.bundle/configファイルに次のものを追加しました。

BUNDLE_BUILD__MYSQL2: "--with-opt-dir=/usr/local/opt"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.