0
1

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.

EC2内でローカルと同じGemをインストールしようとしたらエラーが起きた

Last updated at Posted at 2020-09-13

ポートフォリオ用に作成したアプリをAWSにデプロイする際にEC2環境にGemをインストールしようとした時に下記のエラーが発生したので、解決方法をメモしておく。

bundle installを実行して、ローカルと同じGemをインストールしようとしたら下記のエラーが発生した。

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    current directory: /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/ext/mysql2
/home/ec2-user/.rbenv/versions/2.5.1/bin/ruby -r ./siteconf20200913-26933-1jq0rwz.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
checking for -lmysqlclient... no
-----
mysql client is missing. You may need to 'sudo apt-get install libmariadb-dev', 'sudo apt-get install libmysqlclient-dev' or 'sudo yum install mysql-devel', and try again.
-----
*** 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/ec2-user/.rbenv/versions/2.5.1/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-mysql-dir
        --without-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib
        --without-mysql-lib=${mysql-dir}/lib
        --with-mysqlclientlib
        --without-mysqlclientlib

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

  /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/mysql2-0.5.3/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3 for inspection.
Results logged to /home/ec2-user/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0/mysql2-0.5.3/gem_make.out

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

In Gemfile:
  mysql2

どうやらMySQLがインストールできなかったらしく、このどれかのコマンドやったら直るかもとのことらしい。

##解決策

mysql client is missing. You may need to 'sudo apt-get install libmariadb-dev', 'sudo apt-get install libmysqlclient-dev' or 'sudo yum install mysql-devel', and try again.

エラーメッセージ内にあった上記の推奨コマンドの一つであるsudo yum install mysql-develを実行したら解決した。

下記が出ればOK

In Gemfile:
  mysql2
[ec2-user@ip-10-0-0-142 アプリ名]$ sudo yum install mysql-devel
読み込んだプラグイン:priorities, update-motd, upgrade-helper
amzn-main                                                                                                                                                | 2.1 kB  00:00:00     
amzn-updates                                                                                                                                             | 3.8 kB  00:00:00     
nodesource                                                                                                                                               | 2.5 kB  00:00:00     
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mysql-devel.noarch 0:5.5-1.6.amzn1 を インストール
--> 依存性の処理をしています: mysql55-devel >= 5.5 のパッケージ: mysql-devel-5.5-1.6.amzn1.noarch
--> 依存性の処理をしています: /usr/bin/mysql_config のパッケージ: mysql-devel-5.5-1.6.amzn1.noarch
--> トランザクションの確認を実行しています。
---> パッケージ mysql55-devel.x86_64 0:5.5.62-1.23.amzn1 を インストール
--> 依存性の処理をしています: real-mysql55-libs(x86-64) = 5.5.62-1.23.amzn1 のパッケージ: mysql55-devel-
............省略
........
....
..
.
依存性関連をインストールしました:
  mysql55.x86_64 0:5.5.62-1.23.amzn1     mysql55-devel.x86_64 0:5.5.62-1.23.amzn1     mysql55-libs.x86_64 0:5.5.62-1.23.amzn1     mysql56-devel.x86_64 0:5.6.49-1.37.amzn1    

完了しました!

依存関係がいい感じになったっぽいので再度Gemをインストールすると無事にインストールできた。やったぜ。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?