ChatGPT解决这个技术问题 Extra ChatGPT

Rails: Installing PG gem on OS X - failure to build native extension

It seems many others have had problems installing the pg gem. None of the solutions posed for others have worked for me.

I have tried to install the pg gem and postgres.app. The pg gem won't install. The first error I get is:

An error occurred while installing pg (0.17.0), and Bundler cannot continue. Make sure that gem install pg -v '0.17.0' succeeds before bundling.

The installation advice about pointing my gem install to the config for pg fails with the following error message (which many others on this forum have encountered):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

I don't know how to find or access this log file to search for further clues.

I also get an error message (command not found) when I try using the sudo apt-get install command. I've scoured this forum for the last 6 hours, trying each piece of advice to get pg working with my rails project.

I can't find advice about how to change a path, or specifically, what change is required. My which pg_config returns a file source. I've used that with a command to install pg using that config. It fails.

There are so many people that have had trouble with this. Many answers suggest homebrew. I've had to remove that because it threw up other issues.

Hey, a couple questions that will help down the road: - You're on Mac, right? Right went wrong with homebrew? (ps, as you noted, apt-get is just for Ubuntu (and its Debian-based cousins)) - what postgres version do you have? try running psql -v in your shell. - what ruby version are you running? It looks like 1.9.3, but what does ruby -v give you?
I should add, that my psql is added in: /Applications/Postgres-1.app/Contents/MacOS/bin/psql ; exit; psql (9.3.0) but which psql returns: usr/bin/psql
Hi, thanks very much for looking at this. My psql is v 9.3.0 and ruby is v 1.9.3
See @paninapress's answer for Postgres.app. It worked great for me and doesn't require installing another instance of Postgres.

w
wpp

Same error for me and I didn't experience it until I downloaded OS X 10.9 (Mavericks). Sigh, another OS upgrade headache.

Here's how I fixed it (with homebrew):

Install another build of Xcode Tools (typing brew update in the terminal will prompt you to update the Xcode build tools)

brew update

brew install postgresql

After that gem install pg worked for me.


After two days of headache trying to fix my Rails db following Mavericks upgrade, this fixed it for me, many thanks.
This worked for me too - on a fresh Mavericks install. Thanks!
Thank you for saving my sanity!
Still working. Project is on Ruby 2.2.0 to support an old-ish app, but all the same THANK YOU.
1. brew update 2. brew install postgresql 3. gem install pg 4. bundle install
C
Cfreak

If you are using Ubuntu try to install following lib file

sudo apt-get install libpq-dev

and then

gem install pg

worked for me.


Worked for me too. Am using ubuntu 13.10.
Just make sure you type it correctly. Its not libpg-dev; Its a Q not a P! It took me 10 minutes to figure that out the hard way.
For Amazon Linux it's yum install postgres-devel
Worked for me on Ubuntu 14!!
For CentOS yum install postgresql-devel
J
Jon

I am using OS X Mavericks (version 10.9)

and when I run the above I got the following message: If builds of PostgreSQL 9 are failing and you have version 8.x installed.

So I run the following command:

ARCHFLAGS="-arch x86_64" gem install pg

and this worked for me, I hope this helps someone :)


+1, I tried others, but finally I got pg installed by gem with this solution.
+1, likewise, this was the solution for me as well, where my postgresql was already installed via brew. Thanks Jon for the post.
n.b. If installing as root (for whatever reason), sudo goes before the variable: sudo ARCHFLAGS="-arch x86_64" gem install pg
Actually, I need this every time I run bundle install so I've put it inside ~/.bash_profile as an export :)
C
Community

Ok I also had this problem (psql is v 9.3.0 and ruby is v 2.1.2) and the solution that worked for me was setting the bundle config settings first:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

This answer finally helped me figure it out: https://stackoverflow.com/a/9235107/3546680


This method is preferred if you use postgres.app. Using Homebrew may fix the native extension problem, but having two postgres applications will create conflicts (like port allocation) See also Sayanees' answer at stackoverflow.com/questions/19569031/…
This is definitely the right answer for Postgres.app.
Works well on Mojave, tried successfully few minutes ago.
A
Ali

I tried everything for hours but the following finally fixed it (I'm on OS X 10.9.4):

Install Xcode command line tools (Apple Developer site) brew uninstall postgresql brew install postgresql ARCHFLAGS="-arch x86_64" gem install pg


Thank You. I had use sudo for step 4, is that a bad thing? How can I avoid it?
@Roy - glad to help :) - should be fine, probably want to avoid using sudo as I believe it will install it for all users, but if you're the only user on the system than its probably not that big of a deal.
brew uninstall postgresql and brew install postgresql are not necessary steps on OS X 10.10 and 10.11. Just gem uninstall pg (and remove all versions), then make sure you bundle or gem install pg again, and native extensions will be rebuilt with the new command line tools for this OS X version.
J
James Dela Cruz

easy step

brew install postgresql gem install pg -v 'your version'


M
Marius Butuc

Similarly, after installing Mavericks bundle update was throwing an error on the pg gem, which is only used on production and not locally.

I use Brew to manage my packages and postgresql was already installed, but still I was getting the 'no pg_config' error.

The fix was to just brew uninstall postgresql, then brew install postgresql. After which I was immediately able to successfully run bundle update.


M
Matias Korhonen

I believe the “correct” answer would be to first configure PATH correctly for Postgres.app by adding the following to ~/.profile (.zshrc or ~/.zprofile if using ZSH):

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

Then open a new tab or window in terminal and install the pg gem with:

ARCHFLAGS="-arch x86_64" gem install pg

Documented here:

https://postgresapp.com/documentation/cli-tools.html

https://postgresapp.com/documentation/configuration-ruby.html


j
jbheren

On OSX with Postgres installed in /Applications, I simply run the following command (change 0.20 & 9.4 according to your version)

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

You should have :

Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config' This could take a while... Successfully installed pg-0.20.


Can you explain why we had to use the hyphen 2 extra time before the argument is actually provided?
W
Wayne del Corral Jr

running brew update and then brew install postgresql worked for me, I was able to run the pg gem file no problem after that.


This is the one on modern systems at least (e.g. macOS Big Sur).
H
HosseinToussi

I spent a day on this and here's how I got it fixed:

I found that global value of build.pg was set to: /opt/local/lib/postgresql91/bin/pg_config and that was not where postgres was installed.

I fixed it with replacing the value of build.pg to: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config which is where my postgresql installation is.


G
Gerry

Try:

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

E
Esmaeil MIRZAEE

Solved! I found some lack of library for PostgreSQL on the system. Only two steps solved it:

brew install postgresql

Then run

gem install pg


E
Esmaeil MIRZAEE

For those who are not interested to use brew.

Download PostgreSQL application. Follow the macOS default instruction to install it. It is advisable to run PostgreSQl. Run gem install pg -- --with-pg-config=/path/to/postgress/in/your/applications/folder/` For example, in my machine it is /Applications/Postgres.app/Contents/Versions/12/bin/pg_config


J
John Karippery

i got same problem and i solved

gem update --system 3.0.6