ほつた@はてな

ほつたが技術的な事や個人的な出来事を中心に投稿します。

gem install pgでbrew install postgresqlしてARCHFLAGS="-arch x86_64"指定しても全く解決せず数時間も悪戦苦闘した

HerokuでデプロイするとなるとSQLiteが使えず、PostgreSQLを使わなければならなくなる。 Cloud9ではなく、そろそろRubymineで本格的に開発しようとしていてbundle installをしたところ、pgで数時間もハマったのである。

結論

sudoでARCHFLAGを指定してさらに場所を指定すると成功する。

sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config

bundle installでコケる

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_configARCHFLAGS=-arch x86_64 bundle installz
Using config values from /usr/local/Cellar/postgresql/9.5.3/bin/pg_configARCHFLAGS=-arch
sh: /usr/local/Cellar/postgresql/9.5.3/bin/pg_configARCHFLAGS=-arch: No such file or directory
sh: /usr/local/Cellar/postgresql/9.5.3/bin/pg_configARCHFLAGS=-arch: No such file or directory
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
        --with-pg
        --without-pg
        --enable-windows-cross
        --disable-windows-cross
        --with-pg-config
        --with-pg-dir
        --without-pg-dir
        --with-pg-include
        --without-pg-include=${pg-dir}/include
        --with-pg-lib
        --without-pg-lib=${pg-dir}/


Gem files will remain installed in /var/folders/vf/tbdkk_nx5wq0889j7_pdc_pw0000gn/T/bundler20160818-22367-jz3gq8pg-0.18.4/gems/pg-0.18.4 for inspection.
Results logged to /var/folders/vf/tbdkk_nx5wq0889j7_pdc_pw0000gn/T/bundler20160818-22367-jz3gq8pg-0.18.4/gems/pg-0.18.4/ext/gem_make.out

sudo gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_configでもコケる

sudo gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
Password:
Building native extensions with: '--with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config'
This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb --with-pg-config=/usr/local/Cellar/postgresql/9.5.3/bin/pg_config
Using config values from /usr/local/Cellar/postgresql/9.5.3/bin/pg_config
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... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
        --with-pg
        --without-pg
        --enable-windows-cross
        --disable-windows-cross
        --with-pg-config
        --with-pg-dir
        --without-pg-dir
        --with-pg-include
        --without-pg-include=${pg-dir}/include
        --with-pg-lib
        --without-pg-lib=${pg-dir}/
        --with-pqlib
        --without-pqlib
        --with-libpqlib
        --without-libpqlib
        --with-ms/libpqlib
        --without-ms/libpqlib


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/pg-0.18.4 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/pg-0.18.4/ext/gem_make.out

sudo ARCHFLAGS="-arch x86_64" gem install pgでもコケる

sudo env ARCHFLAGS="-arch x86_64" gem install pg 
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
        --with-pg
        --without-pg
        --enable-windows-cross
        --disable-windows-cross
        --with-pg-config
        --without-pg-config
        --with-pg_config
        --without-pg_config
        --with-pg-dir
        --without-pg-dir
        --with-pg-include
        --without-pg-include=${pg-dir}/include
        --with-pg-lib
        --without-pg-lib=${pg-dir}/


Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/pg-0.18.4 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/pg-0.18.4/ext/gem_make.out

分けわからないので両方やってみたところ成功

結論を参照

参考

qiita.com

まとめ

Railsは環境構築のだるさが物凄い