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


183

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

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

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

有关将我的gem安装指向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的命令一起使用。它失败。

有太多人对此感到困扰。许多答案表明自制。我不得不删除它,因为它引发了其他问题。


1
嘿,有几个问题将对您有所帮助:-您使用的是Mac,对吗?自制错对了吗?(如您所指出的ps,apt-get仅适用于Ubuntu(及其基于Debian的表亲))-您拥有哪个postgres版本?尝试psql -v在您的外壳中运行。-您正在运行什么红宝石版本?看起来像1.9.3,但是ruby -v您会得到什么呢?
rmosolgo

我应该添加,我的psql已添加到:/Applications/Postgres-1.app/Contents/MacOS/bin/psql; 出口; PSQL(9.3.0),但是psql的回报:USR /斌/ PSQL
梅尔

嗨,非常感谢您的关注。我的psql是v 9.3.0,而ruby是v 1.9.3
Mel,

1
有关Postgres.app,请参见@paninapress的答案。它对我来说很棒,不需要安装另一个Postgres实例。
Jamon Holmgren 2014年

Answers:


442

对我来说,这是同样的错误,直到我下载OS X 10.9(Mavericks),我才经历过。感叹,另一个OS升级令人头疼。

这是我使用自制软件修复的方法:

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

之后gem install pg对我有用。


7
经过两天的头痛尝试在Mavericks升级后修复我的Rails数据库,这对我来说已经修复了,非常感谢。
Deborah

4
这也对我有用-在新安装的Mavericks上。谢谢!
marcamillion

1
谢谢您保存我的理智!
吉姆(Jim)

1
还在工作。Project在Ruby 2.2.0上支持旧版本的应用程序,但是都谢谢您。
TristanZimmerman 2015年

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal

223

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

sudo apt-get install libpq-dev

然后

gem install pg

为我工作。


4
也为我工作。我正在使用ubuntu 13.10。
rafaelkin

4
只要确保输入正确即可。不是libpg-dev; 它的Q不是P!我花了10分钟的时间才解决了这个难题。
tir38 2014年

1
对于Amazon Linux,它是yum install postgres-devel
andrewtweber 2014年

1
在Ubuntu 14上为我工作!
18字节

6
对于CentOSyum install postgresql-devel
septerr 2014年

49

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

当我运行上述命令时,我收到以下消息:如果PostgreSQL 9的构建失败,并且您安装了8.x版本。

所以我运行以下命令:

ARCHFLAGS="-arch x86_64" gem install pg

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


2
+1,我尝试了其他方法,但最终我通过此解决方案由gem安装了pg。
宝马

1
+1,同样,这也是我的解决方案,因为我的postgresql已经通过brew安装。感谢乔恩的帖子。
杰森·霍斯特拉

5
nb如果以root用户身份安装(出于某种原因),则sudo会位于变量之前sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman 2014年

其实,我需要这个我每次运行时bundle install,所以我已经把它里面~/.bash_profile作为出口:)
杰克

42

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

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

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


6
如果使用postgres.app,则首选此方法。使用自制软件可以解决原生扩展的问题,但有两个Postgres的应用程序会产生冲突(如端口分配)参见Sayanees'答案在stackoverflow.com/questions/19569031/...
Epigene

4
对于Postgres.app,这绝对是正确的答案。
Jamon Holmgren 2014年

在Mojave上运作良好,已在几分钟前成功尝试。
microspino

23

我尝试了数小时,但以下内容终于解决了它(我在OS X 10.9.4上):

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

谢谢。我在步骤4中使用了sudo,这是一件坏事吗?如何避免呢?
罗伊

@Roy-乐于助人:)-应该没问题,可能想避免使用sudo,因为我相信它将为所有用户安装它,但是如果您是系统上的唯一用户,那么它可能就没什么大不了的了。
阿里Yazdani

brew uninstall postgresql并且brew install postgresql在OS X 10.10和10.11上不是必需的步骤。只要gem uninstall pg(并删除所有版本),然后确保你bundlegem install pg再次,和本机扩展将与新的命令行工具,这个OS X版本进行重建。
奥利维尔·拉坎


6

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

我使用Brew管理我的软件包,并且已经安装了postgresql,但是仍然出现“ no pg_config”错误。

此修复程序是公正brew uninstall postgresql的话brew install postgresql。之后,我立即能够成功运行bundle update


6

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

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

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

ARCHFLAGS="-arch x86_64" gem install pg

记录在这里:


5

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

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

你应该有 :

使用以下命令构建本机扩展:'--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config'这可能需要一段时间...成功安装pg-0.20。


您能解释一下为什么在实际提供参数之前我们必须额外使用连字符2吗?
Akash Agarwal '18

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安装所在的位置。


1

尝试:

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

0

解决了!我发现系统上缺少一些PostgreSQL库。仅需两个步骤即可解决:

brew install postgresql

然后跑

gem install pg


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
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.