安装 pg (0.17.1)时出错,Bundler 无法继续

我刚刚安装了 Rails 4.0.2,当创建一个新的应用程序时,在捆绑阶段我得到:

Installing pg (0.17.1)
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/Dee/.rvm/rubies/ruby-2.0.0-p247/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.

我该怎么补救?

88342 次浏览

Looks like you do not have PostgreSQL installed. The pg gem requires some headers from PostgreSQL to compile native extension.

Some kind of error resported here Installing PG gem on OS X - failure to build native extension

To install dependencies on Ubuntu try this:

sudo apt-get install libpq-dev

and this

gem install pg

If gem install pg fails, try the following command:

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

... from the PostgreSQL.app Documentation

Previously working answer with older version

I installed under mac OSX Mavericks, having the postgres app (Version 9.2.2.0 ) from www.postgresapp.com installed. The underlying problem was simpy that the since postgres was installed via the app, the configuration file resides on a location which is not the default one when installing it without postgressapp. so we need to tell gem where to find this file by:

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

Hope it helps

I'm on a Mac running Mavericks. My solution was to install Postgres.

And then in terminal install using homebrew with the configuration:

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

Note: This answer has been edited to use the latest symlink that is currently included in shipping versions of the Postgres app.

Previous versions suggested:

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

app root:

  1. brew update
  2. brew install postgres
  3. gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.4/bin/pg_config
  4. bundle install
  5. ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
  6. launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. rake db:create:all
  9. rake db:migrate
  10. rails s

NOTE: replace the version number in step 3 if needed.

After installing Postgres I had to run the following command

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

After this bundle install works great!

Hope it helps

The way I managed to get past that error was:

  • cd to app folder and then set the ruby version locally. I'm using ruby 2.1.2.

rbenv local 2.1.2

  • instead of just running bundle install, install the gems in vendor/bundle

bundle install --path vendor/bundle

This did it for me.

I had to combine everything and use

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

If you are using something other than Postgres in development and Postgres in production only, you can add the pg gem to your gemfile like so...

group :production do
gem 'pg',             '0.17.1'
end

Then use bundle install --without production

I needed to use sudo

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

For CentOS users:

sudo yum install postgresql-devel

and

gem install pg

It works for me

rvm list gemsets
rvm use ruby-2.4.1
bundle

error[![resolved with rvm use ruby]2

I was having a problem with Amazon and couldn't use apt-get. For my worked:

    sudo yum install postgresql-devel

then:

    bundle install

and try again:

    rails serve

If you installed through Homebrew; gem install pg -- --with-pg-config=/usr/local/bin/pg_config. Works with Ruby 2.4.6 and pg 0.20.0.

I have just set up a new Macbook Pro which was prebuilt with Catalina.

What worked for me:

  1. Install the Postgres from here: https://postgresapp.com/
  2. Add export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"to your .zshenv, since Z shell is now the default terminal.

On mac this command worked for me.

gem install pg -v '0.18.4' -- --with-cflags="-Wno-error=implicit-function-declaration"