在OS X上安装PG gem - 无法构建本机扩展

时间:2013-10-09 02:59:37

标签: ruby-on-rails macos postgresql gem

似乎很多人在安装pg gem时遇到了问题。没有为他人提出的解决方案对我有用。

我曾尝试安装pg gem和postgres.app。 pg gem不会安装。我得到的第一个错误是:

安装pg(0.17.0)时发生错误,Bundler无法继续。 在捆绑之前确保gem install pg -v '0.17.0'成功。

关于将我的gem install指向pg的配置的安装建议失败,并显示以下错误消息(此论坛上的许多其他人遇到过):

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

我不知道如何查找或访问此日志文件以搜索更多线索。

当我尝试使用sudo apt-get install命令时,我也收到错误消息(找不到命令)。在过去的6个小时里,我已经搜索了这个论坛,尝试了每一条建议,让pg与我的rails项目一起工作。

我无法找到有关如何更改路径的建议,或具体而言,需要进行哪些更改。我的which pg_config返回文件来源。我已经使用命令来使用该配置安装pg。它失败了。

有这么多人遇到麻烦。许多答案都表明了自制软件。我不得不删除它,因为它引发了其他问题。

15 个答案:

答案 0 :(得分:410)

对我来说同样的错误,在我下载OS X 10.9(Mavericks)之前我没有遇到过。叹息,另一个操作系统升级头痛。

以下是我修复它的方法(使用自制程序):

  • 安装另一个Xcode工具版本(在终端中输入brew update将提示您更新Xcode构建工具)
  • brew update
  • brew install postgresql

之后gem install pg为我工作。

答案 1 :(得分:217)

如果您使用的是Ubuntu,请尝试安装以下lib文件

sudo apt-get install libpq-dev

然后

gem install pg

为我工作。

答案 2 :(得分:49)

我正在使用OS X Mavericks(版本10.9)

当我运行上面的内容时,我得到以下消息:如果PostgreSQL 9的版本失败并且你安装了8.x版。

所以我运行以下命令:

ARCHFLAGS="-arch x86_64" gem install pg

这对我有用,我希望这有助于某人:)

答案 3 :(得分:41)

好的我也有这个问题(psql是v 9.3.0,ruby是v 2.1.2),对我有用的解决方案是首先设置bundle配置设置:

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

这个答案终于让我弄清楚了:https://stackoverflow.com/a/9235107/3546680

答案 4 :(得分:22)

我尝试了几个小时,但以下最终修复了它(我在OS X 10.9.4上):

  1. 安装Xcode命令行工具(Apple Developer站点)
  2. brew uninstall postgresql
  3. brew install postgresql
  4. ARCHFLAGS =" -arch x86_64" gem install pg

答案 5 :(得分:7)

简单的步骤

  1. brew install postgresql
  2. gem install pg -v 'your version'

答案 6 :(得分:6)

同样,在安装Mavericks之后bundle update在pg gem上抛出一个错误,该错误仅用于生产而不是本地。

我使用Brew来管理我的软件包并且已经安装了postgresql,但我仍然收到'no pg_config'错误。

修复只是brew uninstall postgresql,然后是brew install postgresql。之后我立即成功运行bundle update

答案 7 :(得分:5)

我认为“正确”的答案是首先为Postgres.app正确配置PATH,如果使用ZSH,则将以下内容添加到~/.profile.zshrc~/.zprofile):

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

然后在终端中打开一个新选项卡或窗口并使用以下命令安装pg gem:

ARCHFLAGS="-arch x86_64" gem install pg

此处记录:

答案 8 :(得分:5)

在OSX中安装了Postgres / Applications,我只需运行以下命令(根据您的版本更改 0.20 & 9.4

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

你应该:

  

使用以下内容构建原生扩展:   '--with-PG-配置= /应用/ Postgres.app /内容/版本/ 9.4 / bin中/ pg_config'   这可能需要一段时间......已成功安装pg-0.20。

答案 9 :(得分:3)

我花了一天时间来解决这个问题,以及我如何解决这个问题:

我发现build.pg的全局值设置为:/opt/local/lib/postgresql91/bin/pg_config 那不是postgres安装的地方。

我修改了它,将build.pg的值替换为: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config 这是我的postgresql安装的地方。

答案 10 :(得分:1)

尝试:

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

答案 11 :(得分:1)

运行brew update然后brew install postgresql为我工作,之后我就可以运行pg gem文件了。

答案 12 :(得分:0)

对于那些不愿意使用brew的人。

  1. 下载PostgreSQL应用程序。
  2. 按照macOS默认说明进行安装。
  3. 建议运行PostgreSQl
  4. 运行gem install pg -- --with-pg-config= / path / to / postgress / in / your / applications / folder /`
    • 例如,在我的机器中 /Applications/Postgres.app/Contents/Versions/12/bin/pg_config

答案 13 :(得分:0)

我遇到了同样的问题,我解决了

gem update --system 3.0.6

答案 14 :(得分:-1)

解决! 我发现在系统上缺少postgresql库。 只有两个步骤解决了它:

1)brew install postgresql 2)gem install pg