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

Posted

技术标签:

【中文标题】无法使用 Postgres.app 在 Mavericks 中安装 pg gem【英文标题】:Cannot install pg gem in Mavericks with Postgres.app 【发布时间】:2013-12-12 00:47:51 【问题描述】:

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

Postgres.app 已安装并运行良好,但我无法让 gem 工作。我做了以下事情:

    使用 Postgres.app 文档中的命令 'env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config' 更新了 Homebrew 并安装了 Apple GCC 4.2 安装了 Xcode 开发者工具 更新了我的 $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/

如果您能提供任何帮助,我将不胜感激。谢谢!

【问题讨论】:

Impossible to Install PG gem on my mac with Mavericks 的可能重复项 【参考方案1】:

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

目前我在/Applications/Postgres.app/Contents/Versions/ 中看到一个名为latest 的符号链接。

你应该能够做到:

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

忘记版本号。这可能不适用于每个(旧)版本,但我自己正在寻找可以保存和重复使用的 sn-p。

【讨论】:

【参考方案2】:

--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 的最新版本后,路径发生了变化,我没有注意到。谢谢! 这也是给我的! 谢谢!出于某种原因,在我的安装中,我不得不运行 $ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config . 较新的 Postgres.app 安装可能需要您使用此命令 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config . 为了进一步参考,我昨天刚刚下载了 Postgres.app,我的 pg_config 位于Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config。通过使用ls 浏览Applications/Postgres.app/Contents 目录,应该能够找出他们的pg_config 在哪里。看看你有/Contents/MacOS还是/Contents/Versions...【参考方案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【参考方案4】:

在全新的 Mac 上,我必须这样做:

    从应用商店安装 Xcode 工具 打开 Xcode 工具并接受许可

    现在运行(希望是面向未来的命令):

    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 的正确路径。 -- -- 很重要,一定是pg中的bug。 "latest" 现在作为一个版本工作,有一个符号链接。话虽如此,我有一个新的 M1 船 Mac,这对我不起作用,我不知道为什么。我检查了路径,一切都在那里。也许那是因为它不希望 libpq 有一个 dylib。【参考方案5】:

这对我有用:

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

【讨论】:

【参考方案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/ 将在您的计算机上工作.【参考方案7】:

在我的情况下(运行 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 

【讨论】:

您可以通过包含 export ARCHFLAGS="-arch x86_64" 将 ARCHFLAGS 放入您的 .bash_profile(或等效文件)中。对我来说,没有这个,PG就行不通。 我正在使用 bundler,我花了一点时间才弄清楚如何将它添加到 bundle 命令中。您可以使用bundle config pg.build "....",更多信息请访问bundler.io/v1.3/man/bundle-config.1.html【参考方案8】:

为了解决这个问题,我在终端窗口中使用自制软件安装了 postgres:

brew install postgres

Homebrew 可以在这里找到

http://brew.sh

【讨论】:

这确实解决了这个问题,但这意味着只为那个头文件安装一个完整的其他 postgres。 是的,如果您使用 Postgres.app,请不要这样做。事实上,如果有brew uninstall postgres,你应该运行它。

以上是关于无法使用 Postgres.app 在 Mavericks 中安装 pg gem的主要内容,如果未能解决你的问题,请参考以下文章

Postgres.app 说“在端口 5432 上运行”但 psql 命令失败

Postgres.app 设置:获取 `which psql` 以返回所需路径

Postgres.app:pg_restore 挂起

markdown Postgres.app:如何删除postmaster.pid文件?

Kubernetes 部署SonarQube

psql:致命:角色“postgres”不存在