大学生がプログラマーを目指すはなし

ruby, python, AIの話が多いです

railsにmysql2を入れるところでハマった

mysqlがインストールできません

普通にgemに gem 'mysql2', '>= 0.4.4', '< 0.6.0' と書いて、 bundle installするところだったんですよね。

省略

-----

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.26/lib

-----

creating Makefile

 

make "DESTDIR=" clean

 

make "DESTDIR="

compiling client.c

compiling infile.c

compiling mysql2_ext.c

compiling result.c

result.c:326:40: warning: incompatible pointer types assigning to 'my_bool *' (aka 'char *') from 'bool *' [-Wincompatible-pointer-types]

    wrapper->result_buffers[i].is_null = &wrapper->is_null[i];

                                       ^ ~~~~~~~~~~~~~~~~~~~~

result.c:328:40: warning: incompatible pointer types assigning to 'my_bool *' (aka 'char *') from 'bool *' [-Wincompatible-pointer-types]

    wrapper->result_buffers[i].error   = &wrapper->error[i];

                                       ^ ~~~~~~~~~~~~~~~~~~

2 warnings generated.

compiling statement.c

linking shared-object mysql2/mysql2.bundle

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/ryomatsu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mysql2-0.4.6 for inspection.

Results logged to /Users/ryomatsu/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-15/2.2.0-static/mysql2-0.4.6/gem_make.out

An error occurred while installing mysql2 (0.4.6), and Bundler cannot continue.

Make sure that `gem install mysql2 -v '0.4.6'` succeeds before bundling.

こういう感じでエラーが出てきました。

とりあえず赤文字の分に従って sudo gem install mysql2 -v '0.4.6'というのを実行します。

 

すると、

Building native extensions.  This could take a while...

ERROR:  Error installing mysql2:

        ERROR: Failed to build gem native extension.

 

(省略)

またこのようなエラーが出てきました。

もう途方に暮れてしまいそうでしたが、色々とググってみると同じような人がたくさんいて、その中でも以下のコマンド

$ xcode-select --install

こちらで解決している方がたくさんいました。

 

しかし、僕の場合、また新たなエラーが出てきました。。。

 

「なんでだろ..」

とか思いながらさらにググり進めると

 

ビルドする際にopensslのパスがビルドの時に必要で、LDFLAGSとかCPPFLAGSとかにパスを追加する記述が必要、などなど、出てきました。

 

で、そちらを踏まえたコマンドがこちら

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

こちらでパスを通し、

 

改めて、  sudo bundle installしてください。

ここで、sudo をつけるのを忘れずに^^

 

こちらでmysqlが入りました!!

 

参考サイト: 

RailsにMySQLを導入したらかなりハマった件について | 大学生Webエンジニアの記録

macOS で bundle install 時に mysql2 のインストールに失敗した | Lonely Mobiler