Railsがインストールできないのは Mojaveのせい

Rails5.2.2.1をインストールしようとしたらエラーが出る。

 

[追記あり:mysql2のbundle installもできないのもMojaveのせい]

 



MacBook-puro:  $ gem install rails --version='5.2.2.1'
Building native extensions. This could take a while... ERROR: Error installing rails: ERROR: Failed to build gem native extension. current directory: /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/nokogiri-1.10.3/ext/nokogiri /Users/masuikeishi/.rbenv/versions/2.5.1/bin/ruby -r ./siteconf20190720-2689-1awtsc3.rb extconf.rb
   #↓ここ大事
checking if the C compiler accepts -I /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/masuikeishi/.rbenv/versions/2.5.1/bin/$(RUBY_BASE_NAME) --help --clean /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError) You have to install development tools first. from /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:574:in `block in try_compile' from /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:521:in `with_werror' from /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:574:in `try_compile' from extconf.rb:138:in `nokogiri_try_compile' from extconf.rb:162:in `block in add_cflags' from /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:632:in `with_cflags' from extconf.rb:161:in `add_cflags' from extconf.rb:416:in `
' To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/nokogiri-1.10.3/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/nokogiri-1.10.3 for inspection. Results logged to /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-darwin-17/2.5.0-static/nokogiri-1.10.3/gem_make.out


  なんかところどころnokogiriのgemがよろしくないって言っているようだけれど、、、

 

 調べてみるとMacOSをMojaveに変えたら不具合が出たという先輩が多いようで、自分も今更Mojaveの影響が出たのか…

 

 このサイトを参考にしました。

http://rui-phone.hatenablog.com/entry/2018/12/02/232244

 

 次のコマンドを順番に実行します。

$ xcode-select --install
$ sudo open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

 

 原因はMojaveのアップデートにたいするXcodeのアップデートで不足があったから。エラー文の中でもそんな部分がありました。 

 

 ※ここの部分
checking if the C compiler accepts -I /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/libxml2... *** extconf.rb failed ***

 なんかSDKのheaderファイルが不足して、なんかの実行に失敗している的な意味合いだと。

 なのでXcodeを改めてインストールして、不足しているファイルを入手するのである。

 

 

 おかげさまで、この手順を完了したらRailsのインストールも無事できました。ありがとうございました。

 

<参考サイト>

● Mojaveにしたら問題が

http://rui-phone.hatenablog.com/entry/2018/12/02/232244

● MojaveにアプデしたらCのヘッダーファイルが読み込まれなくなった件

http://kane-please.hatenablog.com/entry/2018/11/07/001823

 

 

[追記:mysql2のbundle installもできないのもMojaveのせい]

 

 gitcloneでダウンロードしてきたアプリケーションを開こうとしたらbundle install できないでやんの。

 

$ bundle install
 (略)
Fetching mysql2 0.4.10 Installing mysql2 0.4.10 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/masuikeishi/exp_role_playing1/vendor/bundle/gems/mysql2-0.4.10/ext/mysql2 /Users/masuikeishi/.rbenv/versions/2.5.1/bin/ruby -I /Users/masuikeishi/.rbenv/versions/2.5.1/lib/ruby/site_ruby/2.5.0 -r ./siteconf20190728-96507-898jlc.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 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 checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN 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/opt/mysql@5.6/lib ----- creating Makefile current directory: /Users/masuikeishi/exp_role_playing1/vendor/bundle/gems/mysql2-0.4.10/ext/mysql2 make "DESTDIR=" clean current directory: /Users/masuikeishi/exp_role_playing1/vendor/bundle/gems/mysql2-0.4.10/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/masuikeishi/exp_role_playing1/vendor/bundle/gems/mysql2-0.4.10 for inspection. Results logged to /Users/masuikeishi/exp_role_playing1/vendor/bundle/extensions/x86_64-darwin-17/2.5.0-static/mysql2-0.4.10/gem_make.out An error occurred while installing mysql2 (0.4.10), and Bundler cannot continue. Make sure that `gem install mysql2 -v '0.4.10' --source 'https://rubygems.org/'` succeeds before bundling. In Gemfile: mysql2

 

  これも調べてみるとMojaveにUpgradeしたからコマンドラインツールの不具合が起きているとのこと。

 参考サイトにあったコマンドを入力して、必要なパッケージファイルを作るということをします。

 次のコマンドを実行します。

$ sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

 これで一発でbundle install 成功しました。ありがたや〜ありがたや〜!

 

<参考サイト> 

 https://qiita.com/gonzaemon111/items/ea181ba3ff582a124213