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すれば成功しました。