Cannot install pg gem in Mavericks with Postgres.app

Ruby on-RailsMacosPostgresqlOsx MavericksPg

Ruby on-Rails Problem Overview


I am trying to install the pg gem for use with Postgres.app on my local machine. I am running Mavericks.

Postgres.app is installed and running fine, but I cannot get the gem to work. I've done the following:

  1. Used the command 'env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config' from the Postgres.app documentation
  2. Updated Homebrew and installed the Apple GCC 4.2
  3. Installed the Xcode developer tools
  4. Updated my $PATH to reference both the Postgres.app bin and lib directories

All with no success. Here is the specific error message I receive:

Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR:  Error installing pg:
	ERROR: Failed to build gem native extension.

    /Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: 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
	--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=/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
	--with-pg
	--without-pg
	--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}/

I'd appreciate any help you can offer. Thanks!

Ruby on-Rails Solutions


Solution 1 - Ruby on-Rails

You probably have the wrong path for --with-pg-config, check if it's actually there.

You can find the correct path to pg_config with:

find /Applications -name pg_config

In the latest Postgres.app Version the path is:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

Solution 2 - Ruby on-Rails

In my case (running Postgres.app v9.3.4.2) it only seemed to work when prepending the environment architecture flags:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 

Solution 3 - Ruby on-Rails

Being on a brand new mac, here's what I had to do:

  1. Install Xcode tools from the app store

  2. Open Xcode tools and accept the license

  3. Now run (hopefully a future-proofed command):

    gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .```
    

If you have trouble, you can troubleshoot a bit by checking out the actual error in the mkmf.log which you can find by running (if using rvm):

cd ~/.rvm ; find . -name mkmf.log | grep pg

Solution 4 - Ruby on-Rails

I was able to install pg with this command

    gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

I found my path by running

    sudo find / -name "pg_config"

and I Successfully installed pg-0.17.1

Solution 5 - Ruby on-Rails

adding the postgress bin dir to the path also does the trick. just add the bin to the pat like this. with recent installs the latest symbolic link makes sure that this path should be 'stable' for future version upgrades.

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Solution 6 - Ruby on-Rails

To resolve this issue I installed postgres using homebrew using the following in the terminal window:

brew install postgres

Homebrew can be found here

http://brew.sh

Solution 7 - Ruby on-Rails

This worked for me:

gem install pg -- --with-pg-config=`which pg_config`

Solution 8 - Ruby on-Rails

For future reference, since a lot of us are posting new paths for the new version numbers:

Currently I'm seeing a symlink called latest in /Applications/Postgres.app/Contents/Versions/.

You should be able to just do:

$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

And forget about the version number. This might not apply to every (older) version, but I myself was looking for a snippet I could save and reuse.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionblundinView Question on Stackoverflow
Solution 1 - Ruby on-RailsTom De LeuView Answer on Stackoverflow
Solution 2 - Ruby on-RailsMarius ButucView Answer on Stackoverflow
Solution 3 - Ruby on-RailsLouis SayersView Answer on Stackoverflow
Solution 4 - Ruby on-RailsylempView Answer on Stackoverflow
Solution 5 - Ruby on-RailskoenView Answer on Stackoverflow
Solution 6 - Ruby on-RailsGeoff SmithView Answer on Stackoverflow
Solution 7 - Ruby on-RailsGerryView Answer on Stackoverflow
Solution 8 - Ruby on-RailsGabriel OsorioView Answer on Stackoverflow