1
2

More than 5 years have passed since last update.

Railsの、bundle install でmysql2で失敗する(1分で解決する方法)

Posted at

現象

今まで同じパソコン(環境)で、新しくRailsのプロジェクトを作成したら、bundle install の時に以下のようなエラーが出た。最近毎回ここでつまずくので、忘れないようにメモしておきます。

gem_make.out
current directory: /Users/hoge/projects/test/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.2/ext/mysql2
/Users/hoge/.rbenv/versions/2.4.0/bin/ruby -r ./siteconf20190725-32260-xmt1vk.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.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.7.18/lib
-----
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/hoge/projects/test/vendor/bundle/ruby/2.4.0/extensions/x86_64-darwin-16/2.4.0-static/mysql2-0.5.2/mkmf.log

current directory: /Users/hoge/projects/test/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/hoge/projects/test/vendor/bundle/ruby/2.4.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
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

環境

  • macOS Mojave 10.14.5
  • ruby 2.4.0
  • Rails 5.0.1

対処方法

コンパイルする際に必要なライブラリやインクルードファイルの指定を、バンドルの設定をローカルの環境に合わせて追加する。

BUNDLE_BUILD__MYSQL2: "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2