pgエラーでbundle.installできない[Rails開発]

Featured image

Rails アプリを作成中、Gem を取り込むため bundle.install したのですが急にエラーでインストールできなくなりました。

pg のエラーで取り込めなくなったのですが、解決したので備忘として記録します。

bundle.install エラー内容

~~~~
Installing pg 1.1.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

~~~~

Using config values from /usr/local/Cellar/postgresql/10.5/bin/pg_config
sh: /usr/local/Cellar/postgresql/10.5/bin/pg_config: No such file or directory
sh: /usr/local/Cellar/postgresql/10.5/bin/pg_config: No such file or directory
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... yes
checking for PQsetSingleRowMode()... yes
checking for PQconninfo()... yes
checking for PQsslAttribute()... yes
checking for PQencryptPasswordConn()... yes
checking for timegm()... yes
checking for rb_gc_adjust_memory_usage()... yes
checking for PG_DIAG_TABLE_NAME in libpq-fe.h... yes
checking for unistd.h... yes
checking for inttypes.h... yes
checking for C99 variable length arrays... yes
creating extconf.h
creating Makefile

~~~~

linking shared-object pg_ext.bundle
ld: file not found: dynamic_lookup
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [pg_ext.bundle] Error 1

make failed, exit code 2

~~~~

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

In Gemfile:
pg

最後のエラーメッセージに「Make sure that `gem install pg -v ‘1.1.4’」と書いてあったのでインストールしたのですが変わらず。

するとエラーメッセージをよく読むと、pg_config ファイルが無いと言ってますね

sh: /usr/local/Cellar/postgresql/10.5/bin/pg_config: No such file or directory
sh: /usr/local/Cellar/postgresql/10.5/bin/pg_config: No such file or directory

ローカルパスを確認したところ Ver11.3 のフォルダしかありませんでした。

つまり、gem をインストールするにあたって参照する環境ファイルが見えなくてエラーが発生していたのですね。

解決方法

postgresql をビルドする時に参照するパスを変更しましょう。

bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/11.3/bin/pg_config

これで設定し bundle install すれば成功しました。

comments powered by Disqus