LoginSignup
2
1

More than 1 year has passed since last update.

【Rails】EC2内でgemをインストールした際に発生したエラーの対処法

Posted at

某スクールの最終課題をEC2でデプロイする時に発生した事象。(RenderからEC2への移行)
EC2にクローンしたアプリを起動する為に必要なgemをインストールする際に、
上手くインストールが出来ず解決にかなり時間を費やしてしまった為、
備忘録として以下にエラーの詳細と解決方法を記述しておきたいと思います。

発生したエラー

先ず、ローカル環境「bunder2.1.4」と同じバージョンのbundlerをEC2側でも導入する為に、下記コマンドを実行。

[ec2-user@ip-***-**-**-*** <リポジトリ名>]$ gem install bundler -v 2.1.4
[ec2-user@ip-***-**-**-*** <リポジトリ名>]$ bundle install

すると、下記エラーメッセージが出現。
メッセージの内容はターミナル上でpgのバージョン'1.4.5'を導入する必要があるとのこと。

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

EC2内ターミナルで指定バージョンのpgのインストールを実行したところ、別のエラーメッセージ「Your PostgreSQL is too old. Either install an older version of this gem or upgrade your database to at least PostgreSQL-9.3.(PostgreSQLのバージョンが古すぎるので、せめて9.3にアップグレードしなさい)」が出てきました。

[ec2-user@ip-***-**-**-*** <リポジトリ名>]$ gem install pg -v '1.4.5'
Building native extensions. This could take a while...
ERROR:  Error installing pg:
	    ERROR: Failed to build gem native extension.

<省略>

Your PostgreSQL is too old. Either install an older version of this gem or upgrade your database to at least PostgreSQL-9.3.
*** 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.

エラーの原因

そもそも、EC2ではデータベースにPostgreSQLではなく、MariaDBを使用してデプロイしようとしていたはずなので、PostgreSQLは不要になるのでは?と考え、Render使用時用としてGemfileに記載していた「gem 'pg'」を削除したところ、正常にEC2内でgemをインストールすることができました。やはり、「gem 'pg'」がgemfileに残っていたことが原因だと考えます。

解決方法

実際に行った手順の詳細は以下の通りです。

①Gemfileで、「gem 'pg'」の記述を削除
②VScodeからGemfile.lockを右クリックで削除、ローカル環境の最終課題アプリでbundle installを実行
③GitHubにコミットとプッシュ
④EC2環境でpull (コマンド: git pull origin main or git pull origin master)
⑤EC2環境でbundle install
2
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
2
1