web-dev-qa-db-ja.com

mysql2 gemを使用してアプリをインストールしようとするとエラーが発生する

オープンソースをインストールしようとしていますRails 3.2.21アプリケーションmysql2 gemですが、bundleコマンドを実行しようとすると、次のエラーが表示されます。

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

Homebrewでインストールしたmysqlのすべてのバージョンをアンインストールし、次のように再インストールしてみました。

brew uninstall --force mysql && brew install mysql

次に実行します:

Sudo gem install mysql2

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

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

59
zenvelope

エラーログは言う:

ld: library not found for -lssl

したがって、libsslをインストールする必要があります。

brew install openssl

それが役に立てば幸い。

13

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

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"

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

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

135

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

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

xcode-select --install
35
Allen

これを試して:

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

(必要に応じてバージョンを更新します)

19
stereodenis

ソリューションに基づいて ここ

brew install openssl

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

問題を解決しました。

8
Gilg Him

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

brew reinstall openssl && brew link openssl --force 

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

6
zenvelope
Sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

ここから: https://gorails.com/setup/osx/10.14-mojave

2
k1r8r0wn