mysql2(gem)の bundle install に失敗したときの対応

mysql2(gem) の bundle install に失敗したときの対応


実際にやる内容は、Rails で MySQL の bundle install エラー対処方 - Qiita と同じです・・・

bundle install

bundle install すると失敗する。

$ bundle install --path vendor/bundle


Fetching mysql2 0.4.8
Installing mysql2 0.4.8 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/username/project_name/vendor/bundle/ruby/2.5.0/gems/mysql2-0.4.8/ext/mysql2
/Users/username/.rbenv/versions/2.5.0/bin/ruby -r ./siteconf20200120-59594-1n4f5y8.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for rb_big_cmp()... yes
Using mysql_config at /usr/local/opt/mysql@5.6/bin/mysql_config
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
checking for SSL_MODE_DISABLED in mysql.h... no
checking for MYSQL_OPT_SSL_ENFORCE in mysql.h... no
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
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/opt/mysql@5.6/lib
creating Makefile

current directory: /Users/username/project_name/vendor/bundle/ruby/2.5.0/gems/mysql2-0.4.8/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/username/project_name/vendor/bundle/ruby/2.5.0/gems/mysql2-0.4.8/ext/mysql2
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/username/project_name/vendor/bundle/ruby/2.5.0/gems/mysql2-0.4.8 for inspection.
Results logged to /Users/username/project_name/vendor/bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0-static/mysql2-0.4.8/gem_make.out

An error occurred while installing mysql2 (0.4.8), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.8' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:


$ bundle config --local build.mysql2 --with-opt-lib=/usr/local/opt/openssl/lib --with-opt-include=-I/usr/local/opt/openssl/include
You are replacing the current local value of build.mysql2, which is currently nil

再度 bundle install

問題なく bundle install できた。

$ bundle install --path vendor/bundle