Railsインストール時のMySQLエラーを解消する方法

インストール時のエラーを解消する方法

またお前か。と言いたくなるほどRailsインストールするときにはほぼ必ずMySQL関連のエラーとなります。

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

In Gemfile:
  mysql2
         run  bundle binstubs bundler
Could not find gem 'mysql2 (~> 0.5)' in locally installed gems.
       rails  webpacker:install
Could not find gem 'mysql2 (~> 0.5)' in locally installed gems.
Run `bundle install` to install missing gems.
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

エラーコードの言うとおりにコマンドを実行しても解消しないので、解消方法をまとめました。

目次

インストールエラーの解消方法

結論から言うと、下記コマンドにて解消できます。

$ brew install openssl
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
$ bundle install

Railsインストール時に出されるエラーは、これまで冒頭に記載した2種類に遭遇しましたが、どちらも同じコマンドにて解消できました。

エラーコードの解読

いったん、エラーコードに何が書かれているか整理します。

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

In Gemfile:
  mysql2
         run  bundle binstubs bundler
Could not find gem 'mysql2 (~> 0.5)' in locally installed gems.
       rails  webpacker:install
Could not find gem 'mysql2 (~> 0.5)' in locally installed gems.
Run `bundle install` to install missing gems.

まとめると「v0.5以上のmysqlのgemを使うように指示されているけどインストールされていないのでbundle installでインストールしてくれ」とのこと。

もう一つのエラー文も見てみます。

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

「mysql2 (0.5.2)をインストールするときにエラーが発生したので、まずはgem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'でインストールしてくれ」という意味です。

要はどちらもmysqlのgemを正しくインストールせよ、ということですよね。

ただし、エラー文が示すように愚直にインストールしなおしても解消しないのが今回のミソ。

本当の原因はなにか探る

gemをインストールし直しても解消しないのであれば、別の原因があるはず。

エラー文を読み込むと、下記のような記載がありました。

ld: library not found for -lssl
linker command failed with exit code 1 (use -v to see invocation)

lssl自体が何をしているのか具体的にはわからなかったのですが、どうやらopenssl関連のもののようです。

opensslの設定を確認してみます。

$ brew info openssl
openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

いろいろ情報が表示されますが、下記のような記載がありました。

openssl is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

opensslが/usr/localにつながっていないとのことで、これが大本の原因となりエラーに繋がっていたようです。

もともとmacではopensslがデフォルトで繋がっていたのですが、macのOSをSierra以降はLibreSSLに変わっていたとのこと。

この設定が悪さをしていました。

そのため、opensslをインストールしてつなぎ直します。

$ brew install openssl
$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

これでインストールが可能になったので、改めてbundle installを実行します。

Installing mysql2 0.5.3 with native extensions
Bundle complete! 17 Gemfile dependencies, 75 gems now installed.
Bundled gems are installed into `./vendor/bundle`

上記のようにメッセージが表示されてmysqlのgemを含むインストールが完了しました。

インストール時のエラーを解消する方法

この記事が気に入ったら
いいね または フォローしてね!

SHARE
  • URLをコピーしました!

コメント

コメントする

目次