Help us understand the problem. What is going on with this article?

mysql2 gemがインストールできない時の対策 全部のせ

mysql2 gemは色々な理由でインストールできなくなることが多々ある。その全ての対策を書いておく。

事前にやっておくべきこと

Command Line Toolsのインストール

既にインストールしていたとしても、Xcodeのバージョンアップ、OSのバージョンアップ、などで再インストールが必要になることがある。

mysql2 gemのインストール(とそれに関連するコンパイル)でトラブルが起きたときは、とりあえず下記のコマンドを実行しておくとよい。仮に何度もやったからといって、何かが壊れることはない。

xcode-select --install

Xcode - install Command Line Tools

Command Line Toolsをpkgファイルでインストールする

この手順は、Command Line Toolsがコマンドラインからインストールできなかった人向けです。

Command Line Toolsは、OSのバージョンによってはコマンドラインからインストールできないことがある。その場合は、Mac OSとXcodeの両方のバージョンの組み合わせに一致するpkgファイルで直接Command Line Toolsをインストールする必要がある。

pkgファイルはApple公式サイトで「command line tools」を検索すれば見つけることができる。

スクリーンショット 2019-09-18 23.06.18.png

↑ 2019年9月時点で最新の環境の場合、Command Line Tools (macOS 10.14) for Xcode 10.3.dmgをダウンロードすることになる。

xcode-select --installに失敗した
More Downloads for Apple Developers

Cのヘッダーファイルをインストールする

Mac OS Mojaveにアップデートすることで、Cのヘッダーファイルが読み込めなくなることがある。その場合は、Command Line Toolsをインストールした時にコピーされるpkgファイルから、Cのヘッダーファイルのみインストールする必要がある。

sudo open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Command Line Toolsが正しくインストールされていれば、上記のコマンドを実行して、インストーラーの指示に従うだけでよい。

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

MySQLをインストールする

MySQLをインストールすることで用意されるCのヘッダーファイルもあるため、忘れずにインストールしておくこと。

brew install mysql

mysql2 gemのインストール

コンパイルオプションを何も指定しない場合

上記の事前準備を全て済ませた上で、まずはこのコマンドを試してみる。これで完了してくれればとても嬉しい。

bundle install --path .bundle

mysql2 gemがインストール失敗した際に、You have to install development tools first.と表示されることがありますが、事前準備が正しく完了しているなら、このエラーメッセージはなんの関係もありません。

コンパイルオプションを指定する場合

上記のシンプルなコマンドでインストールできなかった場合は、bundlerにコンパイルオプションを指定してみる。

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

bundle install --path .bundle

上記のbundle configコマンドは、下記のコマンドと同じ意味になります。

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

ここまでの手順で、mysql2 gemはインストールできているはず…! もしできなかった人がいたら、コメント欄で教えてもらえるとありがたいです。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away