无法使用Postgres.app在小牛中安装pg gem


74

我正在尝试在本地计算机上安装pg gem与Postgres.app一起使用。我在跑小牛队。

Postgres.app已安装并运行良好,但是我无法运行该gem。我已经完成以下工作:

  1. 使用了来自Postgres.app文档的命令'env ARCHFLAGS =“-arch x86_64” gem install pg---with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config
  2. 更新了Homebrew并安装了Apple GCC 4.2
  3. 安装了Xcode开发人员工具
  4. 更新了我的$ PATH以同时引用Postgres.app bin和lib目录

一切都没有成功。这是我收到的特定错误消息:

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}/

我会很感激您能提供的任何帮助。谢谢!


Answers:


261

您可能有错误的路径--with-pg-config,请检查它是否确实存在。

您可以找到正确的路径pg_config

find /Applications -name pg_config

在最新的Postgres.app版本中,路径为:

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

够尴尬的是这样。升级到最新版本的Postgres.app后,路径更改了,我没有注意到。谢谢!
blundin

对我来说也是!
JD Maresco 2014年

23
谢谢你!出于某种原因,我必须在我的装置上运行$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config .
Gabriel Osorio 2014年

3
较新的Postgres.app安装程序可能需要您使用此命令gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config .
Sean

1
为了进一步参考,我昨天刚刚下载了Postgres.app,我的pg_config位于Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configls通过浏览Applications/Postgres.app/Contents目录,应该能够弄清楚其pg_config在哪里。看看你是否有/Contents/MacOS/Contents/Versions...
peterhurford

16

以我为例(运行Postgres.app v9.3.4.2),它似乎仅在附加环境体系结构标志时才起作用:

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

您可以通过包含将ARCHFLAGS放入.bash_profile(或等效文件)中export ARCHFLAGS="-arch x86_64"。对我来说,没有这个,PG就不起作用。
peterhurford 2014年

我正在使用捆绑程序,花了一些时间弄清楚如何将其添加到bundle命令中。您可以使用bundle config pg.build "....",在bundler.io/v1.3/man/bundle-config.1.html上
乍得·戈尔辛(Jad Gorshing)

13

在全新Mac上,这是我要做的事情:

  1. 从应用商店安装Xcode工具
  2. 打开Xcode工具并接受许可
  3. 现在运行(希望是一个经过验证的命令):

    version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .

如果遇到问题,可以通过检查mkmf.log中的实际错误来解决一些问题,该错误可以通过运行(如果使用rvm)找到:

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

这是最新版本的Postgres App的正确路径。
Michael Shimmins 2014年

--很重要,必须是pg中的错误。
2014年

6

我能够使用此命令安装pg

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

我通过跑步找到了自己的路

    sudo find / -name "pg_config"

并且我成功安装了pg-0.17.1


pg_config使用此命令更容易找到文件,因此您不必搜索计算机上的所有文件:$ find /Applications/Postgres.app/ -name "pg_config" 搜索/Library/可以在您的计算机上进行。
鲍尔斯

3

将postgress bin目录添加到路径也可以解决问题。像这样将垃圾箱添加到拍拍中 对于最新安装的产品,最新的符号链接可确保此路径在以后的版本升级中应该是“稳定的”。

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

谢谢,让它gem install工作正常:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin gem install pg
Christoph Geschwind

2

要解决此问题,我在终端窗口中使用以下方法使用自制软件安装了postgres:

brew install postgres

自制酒可以在这里找到

http://brew.sh


4
这确实解决了问题,但它意味着仅为该一个头文件安装整个其他postgres。
superluminary 2014年

5
是的,如果您使用的是Postgres.app,请不要这样做。实际上,brew uninstall postgres如果有,则应运行。
peterhurford 2014年

1

这对我有用:

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

1

供以后参考,因为我们很多人都在发布新版本号的新路径:

目前我看到一个叫符号链接latest/Applications/Postgres.app/Contents/Versions/

您应该能够做到:

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

忘记版本号。这可能不适用于每个(较旧的)版本,但我本人正在寻找可以保存和重复使用的代码段。

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.