1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[wsl] mysql2のgemインストール中にエラーが起きた件について

Posted at

動作環境

win10 wsl Ubuntu

はじめに

先日、Rubyからデータベースを参照するためにActiveRecordとmysql2のgemをインストールしていました。
まずはActiveRecordをインストール。

~$ gem install activerecord

つづいてmysql2をインストール(エラー発生)。

~$ gem install mysql2

ここでエラーが発生してしまいました。mysql2インストール失敗です。表示されたエラーがこちら。

~$ gem install mysql2
Building native extensions. This could take a while...
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

    current directory: /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3/ext/mysql2
/home/(ユーザ名)/.rbenv/versions/2.7.2/bin/ruby -I /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210416-4959-9f7auo.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
*** 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=/home/(ユーザ名)/.rbenv/versions/2.7.2/bin/$(RUBY_BASE_NAME)
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysql-config
        --without-mysql-config
        --with-mysqlclient-dir
        --without-mysqlclient-dir
        --with-mysqlclient-include
        --without-mysqlclient-include=${mysqlclient-dir}/include
        --with-mysqlclient-lib
        --without-mysqlclient-lib=${mysqlclient-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib
/home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `block in find_library': undefined method `split' for nil:NilClass (NoMethodError)        from /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `collect'
        from /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/2.7.0/mkmf.rb:1050:in `find_library'
        from extconf.rb:87:in `<main>'

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

  /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/mysql2-0.5.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/mysql2-0.5.3 for inspection.
Results logged to /home/(ユーザ名)/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-linux/2.7.0/mysql2-0.5.3/gem_make.out

今回はこのエラーをくぐり抜け、mysql2をインストールします。

エラーの意味

エラーを見てみると、必要なファイルが不足しておりコンパイルに失敗したようです。エラー文に勧められたオプションから、sql関連のパッケージが無いようだと思われます。

追加でインストール

エラー解決のために、不足していたファイルを別でインストールします。(今回は"libmysqlclient-dev"をインストール)

~$ sudo apt-get install libmysqlclient-dev

libmysqlcliect-devをインストール後、もう一度mysql2をインストールしてみます。

~$ gem install mysql2

すると、うまくインストールすることができました。無事に解決して良かった。

別解

詳しく調べてみると、この類のエラーに関する記事はたくさんありました。いくつか見ていると、

~$ gem install mysql2 -(オプション)

のようにオプションを指定してインストールする方法もあるようです。そちらについては以下を参考にしてください。(参考[3])

参考

[1] ActiveRecordを単体で使うには
[2] road288の日記 libmysqlclient-devを入れる
[3] Windows Subsystem for Linuxでmysqlを使えるようにする

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?