質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

1回答

1150閲覧

Rails+PostgreSQLを使用したAmazon EC2のデプロイ作業で発生したエラーを解消したい

yama35

総合スコア2

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

1グッド

1クリップ

投稿2022/12/26 01:01

編集2022/12/30 08:45

前提

Dockerを使用してRails+Postgresqlで作成したアプリを、AWS上にデプロイする作業を行なっております。
作業にあたり、以下のサイトの内容に従い進行しております
https://qiita.com/gyu_outputs/items/b123ef229842d857ff39

作業工程の途中でエラーが発生してしまい、行き詰まってしまっている状態のため、
エラーの解消をしたいです。

【補足】
上記サイトでは、データベースはMySQLを使用して紹介しているため、
その部分をPostgresqlに置き換えて作業しています。
ローカルのPostgresqlは14.3を使用しているため、EC2上で以下のサイトを参考にPostgresqlをインストールしました。
https://zenn.dev/uotohotaru/articles/0730f90dbf7a6d

実現したいこと

同サイトにおける以下の部分の手順に、「$ bundle install」を行いgemをインストールするとあるのですが、この部分でエラーが発生しているため、エラーを解消したいです。
なお、ここまでの手順では特にエラー等はなく進められています。(MySQLの部分だけはPostgresqlとして置き換えて作業していますが)
https://qiita.com/gyu_outputs/items/b123ef229842d857ff39#%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%AB%E4%B8%8A%E3%81%AE%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%A7bundler%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B

環境

【ローカル】
Ruby 3.1.2
Rails 7.0.4
PostgreSQL 14.3
bundler 2.3.7
※Rails、PostgreSQLはDockerコンテナを使用して起動しています。

【EC2内】
Ruby 3.1.2
Rails 7.0.4
PostgreSQL 14.3
bundler 2.3.7

発生している問題・エラーメッセージ

現状でbundle installすると、以下のようなエラーが発生します。

[ec2-user@ip-##-##-## アプリのディレクトリ]$ bundle install Fetching gem metadata from https://rubygems.org/.......... Resolving dependencies.... Using rake 13.0.6 Using concurrent-ruby 1.1.10 〜〜中略〜〜 Using jbuilder 2.11.5 Fetching pg 1.4.4 Installing pg 1.4.4 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/pg-1.4.4/ext /home/ec2-user/.rbenv/versions/3.1.2/bin/ruby -I /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0 -r ./siteconf20221226-19471-dh4bhh.rb extconf.rb Calling libpq with GVL unlocked checking for pg_config... no checking for libpq per pkg-config... no Using libpq from checking for libpq-fe.h... no Can't find the 'libpq-fe.h header ***************************************************************************** Unable to find PostgreSQL client library. Please install libpq or postgresql client package like so: sudo apt install libpq-dev sudo yum install postgresql-devel sudo zypper in postgresql-devel sudo pacman -S postgresql-libs or try again with: gem install pg -- --with-pg-config=/path/to/pg_config or set library paths manually with: gem install pg -- --with-pg-include=/path/to/libpq-fe.h/ --with-pg-lib=/path/to/libpq.so/ *** 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/3.1.2/bin/$(RUBY_BASE_NAME) --with-pg --without-pg --enable-gvl-unlock --disable-gvl-unlock --enable-windows-cross --disable-windows-cross --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-libpq-dir --without-libpq-dir --with-libpq-include --without-libpq-include=${libpq-dir}/include --with-libpq-lib --without-libpq-lib=${libpq-dir}/lib --with-libpq-config --without-libpq-config --with-pkg-config --without-pkg-config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib To see why this extension failed to compile, please check the mkmf.log which can be found here: /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/pg-1.4.4/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/pg-1.4.4 for inspection. Results logged to /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/pg-1.4.4/gem_make.out /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:95:in `run' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:47:in `block in build' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/tempfile.rb:317:in `open' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/ext_conf_builder.rb:26:in `build' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:161:in `build_extension' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:195:in `block in build_extensions' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `each' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/ext/builder.rb:192:in `build_extensions' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/3.1.0/rubygems/installer.rb:853:in `build_extensions' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/rubygems_gem_installer.rb:71:in `build_extensions' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/rubygems_gem_installer.rb:28:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/source/rubygems.rb:204:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/gem_installer.rb:54:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/gem_installer.rb:16:in `install_from_spec' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/parallel_installer.rb:186:in `do_install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/parallel_installer.rb:171:in `install_serially' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/parallel_installer.rb:97:in `call' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer/parallel_installer.rb:71:in `call' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer.rb:259:in `install_in_parallel' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer.rb:209:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer.rb:89:in `block in run' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/process_lock.rb:12:in `block in lock' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/process_lock.rb:9:in `open' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/process_lock.rb:9:in `lock' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer.rb:71:in `run' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/installer.rb:23:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/cli/install.rb:62:in `run' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/cli.rb:255:in `block in install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/settings.rb:131:in `temporary' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/cli.rb:254:in `install' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/cli.rb:31:in `dispatch' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/cli.rb:25:in `start' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/exe/bundle:48:in `block in <top (required)>' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/lib/bundler/friendly_errors.rb:103:in `with_friendly_errors' /home/ec2-user/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/bundler-2.3.7/exe/bundle:36:in `<top (required)>' /home/ec2-user/.rbenv/versions/3.1.2/bin/bundle:25:in `load' /home/ec2-user/.rbenv/versions/3.1.2/bin/bundle:25:in `<main>' An error occurred while installing pg (1.4.4), and Bundler cannot continue. In Gemfile: pg

試したこと

エラー文の、
Please install libpq or postgresql client package like so:
sudo yum install postgresql-devel
を実行し、インストールされたかと思い、再度bundle installを実行しましたが、エラー状況は変わりませんでした。

また、上記のコード内に「問題を回避するために --skip-broken を用いることができます。」とあるので、
$ sudo yum install postgresql-devel --skip-broken 
を試したのですが、同じくbundle installはエラーのままでした。

また、エラー文に「Can't find the 'libpq-fe.h header」とあり、libpq-fe.hというファイルが見つからないためにエラーが起きていると考え、調べましたが、「sudo yum install postgresql-devel を実行すると解決する」といった内容のものしか見つけられず、どのようにエラー解消を進めたら良いかわからない状態です。
調べたサイト参考:https://ryotatake.hatenablog.com/entry/2019/04/07/libpq-fe

以上、ご回答お待ちしております。

shinoharat👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yama35

2022/12/26 01:04 編集

【補足】 文字数上書けなかったため、以下に $ sudo yum install postgresql-devel を実行した際のログをコメントいたします。 [ec2-user@ip-##-##-## ~]$ sudo yum install postgresql-devel 読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd amzn2-core | 3.7 kB 00:00:00 amzn2extra-docker | 3.0 kB 00:00:00 amzn2extra-kernel-5.10 | 3.0 kB 00:00:00 amzn2extra-nginx1.12 | 1.3 kB 00:00:00 amzn2extra-postgresql11 | 3.0 kB 00:00:00 amzn2extra-postgresql14 | 3.0 kB 00:00:00 nodesource      | 2.5 kB 00:00:00 pgdg-common/x86_64/signature | 198 B 00:00:00 pgdg-common/x86_64/signature | 2.9 kB 00:00:00 !!! pgdg10/x86_64/signature | 198 B 00:00:00 pgdg10/x86_64/signature             | 3.6 kB 00:00:00 !!! pgdg11/x86_64/signature | 198 B 00:00:00 pgdg11/x86_64/signature | 3.6 kB 00:00:00 !!! pgdg12/x86_64/signature | 198 B 00:00:00 pgdg12/x86_64/signature | 3.6 kB 00:00:00 !!! pgdg13/x86_64/signature | 198 B 00:00:00 pgdg13/x86_64/signature | 3.6 kB 00:00:00 !!! pgdg14/x86_64/signature    | 198 B 00:00:00 pgdg14/x86_64/signature | 3.6 kB 00:00:00 !!! pgdg15/x86_64/signature | 198 B 00:00:00 pgdg15/x86_64/signature               | 3.6 kB 00:00:00 !!! 19 packages excluded due to repository priority protections パッケージ postgresql-devel は postgresql11-devel によって不要になりました。代わりに postgresql11-devel-11.18-1PGDG.rhel7.x86_64 のインストールを試みています。 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ postgresql11-devel.x86_64 0:11.18-1PGDG.rhel7 を インストール --> 依存性の処理をしています: postgresql11-libs(x86-64) = 11.18-1PGDG.rhel7 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: postgresql11(x86-64) = 11.18-1PGDG.rhel7 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: llvm5.0-devel >= 5.0 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: llvm-toolset-7-clang >= 4.0.1 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: libpgtypes.so.3()(64bit) のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: libecpg_compat.so.3()(64bit) のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: libecpg.so.6()(64bit) のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ postgresql11.x86_64 0:11.18-1PGDG.rhel7 を インストール ---> パッケージ postgresql11-devel.x86_64 0:11.18-1PGDG.rhel7 を インストール --> 依存性の処理をしています: llvm5.0-devel >= 5.0 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 --> 依存性の処理をしています: llvm-toolset-7-clang >= 4.0.1 のパッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 ---> パッケージ postgresql11-libs.x86_64 0:11.18-1PGDG.rhel7 を インストール --> 依存性解決を終了しました。 エラー: パッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 (pgdg11) 要求: llvm-toolset-7-clang >= 4.0.1 エラー: パッケージ: postgresql11-devel-11.18-1PGDG.rhel7.x86_64 (pgdg11) 要求: llvm5.0-devel >= 5.0 問題を回避するために --skip-broken を用いることができます。 ** Found 1 pre-existing rpmdb problem(s), 'yum check' output follows: pgdg-redhat-repo-42.0-28.noarch は次の要求が不足ています: /etc/redhat-release 以上、よろしくお願いいたします。
shinoharat

2022/12/29 07:43

EC2の環境を詳しく知りたいので、 cat /etc/os-release と uname -a の結果を教えてください。
guest

回答1

0

自己解決

$ sudo yum install postgresql-devel について、以下のサイトなどを参考に解決を試みましたが、結果としてエラーは変わらず、状況は変化しませんでした。
https://yohei-a.hatenablog.jp/entry/20210613/1623546934
https://ys3128.hatenadiary.jp/entry/2020/06/15/043810

ですので、一度EC2インスタンスを作り直すこととし、またデプロイの参考にするサイトについても、PostgreSQLに対応した内容のものを参考にしました。
https://qiita.com/take18k_tech/items/5710ad9d00ea4c13ce36

進めた中で記述されていたことは、「PostgreSQL12以上のものはpostgresql-develのインストールは難しいのでお勧めしない」とあったため、サイトの手順通りPostgreSQL11で進めたところ、上手くいきました。

以上より、現在は質問内容の進め方と異なっており、またPostgreSQLに関する内容はクリアしていると判断したため、自己解決とさせていただきます。

投稿2022/12/29 23:45

yama35

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問