安装pg(0.17.1)时发生错误,并且Bundler无法继续


87

我刚安装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.

我该如何解决?


1
您可能需要添加osx标签。解决方案似乎可能与您的操作系统有关。
文斯2013年

您可能要参观。stackoverflow.com/questions/3116015/…。希望这些解决方案之一对您有所帮助
Yana Agun Siswanto 2013年

Answers:


144

我在运行Mavericks的Mac上。我的解决方案是安装Postgres

然后在终端安装中使用homebrew进行配置:

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

注意:此答案已被编辑为使用latestPostgres应用程序的发行版本中当前包含的符号链接。

以前的版本建议:

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

Yup矿山也位于其他位置。谢谢你的回答。
Deekor 2014年

正确的Bob,适用于我的postgresapp版本是9.2.2.0,因此他们必须在9.3发行版上更改了此位置。
罗伯蒂里斯(Robertibiris)

1
现在,从15年2月15日开始,我们正在查看9.4版本,很高兴看到他们不断对其进行更新-“ gem install pg---with-pg-config = / Applications / Postgres。 app / Contents / Versions / 9.4 / bin / pg_config“
corprew 2015年

3
我很着急,错过了回答“使用自制软件安装”的部分。我这样做后,这个答案对我brew update; brew install postgres
丹尼斯

6
在您的解决方案中,请添加版本,其他最新的PG gem将安装:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092 2015年


21

应用程式根目录:

  1. 酿造更新
  2. brew安装postgres
  3. gem install pg---with-pg-config = / usr / local / Cellar / postgresql / 9.3.4 / bin / pg_config
  4. 捆绑安装
  5. ln -sfv /usr/local/opt/postgresql/*.plist〜/ Library / LaunchAgents
  6. launchctl加载〜/ Library / LaunchAgents / homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. 耙db:create:all
  9. 耙db:migrate
  10. 滑轨

注意:如果需要,请替换步骤3中的版本号。


10

以前使用旧版本的答案

我安装在Mac OSX Mavericks下,安装了来自www.postgresapp.com的postgres应用程序(版本9.2.2.0)。根本的问题很简单,因为postgres是通过该应用程序安装的,因此在不使用postgressapp进行安装的情况下,配置文件位于默认位置。因此,我们需要通过以下方式告诉gem在哪里可以找到此文件:

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

希望能帮助到你


1
这是我的解决方案(OSX)
raulriera 2014年

如果此方法不适用于任何人,则对于9.3而言,配置文件已移动-请参见已接受的答案。
Deekor 2014年

5

如果gem install pg失败,请尝试以下命令:

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

...来自PostgreSQL.app文档


2
由于官方应用程序最近将名称更改为“ Postgres93.app”,因此命令应为: env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Blackcoat,2014年

1
对我来说,它的工作对象是: env ARCHFLAGS="-arch x86_64" gem install pg
dnlcrl,2014年

4

看起来您没有安装PostgreSQL。该pg宝石需要从PostgreSQL的一些头编译原生扩展。


您的Ruby / Bundler设置怎么样?您使用的是Mac OS X还是Linux?如果您使用的是Mac OS X,则通过homebrew或PostgreSQL.app安装了PostgreSQL?
Tungd

我在Mac上。我是通过应用安装的
Deekor 2013年

我已经安装了0.17.0。与rails 4一起使用有什么危害?
Deekor

然后尝试运行bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_configbundle再次运行。如果您将应用程序安装到~/Application而不是/Application
tungd

3

我必须结合一切并使用

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

3

如果仅在开发中使用Postgres而不在生产中使用Postgres,则可以将pg gem添加到您的gemfile中,如下所示:

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

然后使用 bundle install --without production


3

对于CentOS用户:

sudo yum install postgresql-devel

gem install pg

1

我刚刚设置了一个新的Macbook Pro,它是用Catalina预建的。

对我有用的是:

  1. 从此处安装Postgres:https//postgresapp.com/
  2. 添加export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"到您的中.zshenv,因为Z shell现在是默认终端。

0

安装Postgres后,我必须运行以下命令

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

此捆绑包安装后效果很好!

希望能帮助到你


0

我设法克服该错误的方法是:

  • cd到app文件夹,然后在本地设置ruby版本。我正在使用ruby 2.1.2。

rbenv本地2.1.2

  • 不仅仅是运行捆绑安装,而是在供应商/捆绑中安装gem

捆绑安装-路径供应商/捆绑

这为我做到了。


0

我需要使用sudo

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


0

如果您是通过Homebrew安装的;gem install pg -- --with-pg-config=/usr/local/bin/pg_config。适用于Ruby 2.4.6和pg 0.20.0。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.