安装pg gem;错误:无法构建gem原生扩展

时间:2013-10-23 10:35:26

标签: ruby-on-rails postgresql osx-mavericks pg

更新到 OS X 10.9 Mavericks 后,我尝试启动Rails 3应用程序,但与PG数据库的连接无法正常工作。检查PGAdmin III,数据库仍在那里,它工作正常。 所以我尝试重新安装pg gem:

gem uninstall pg
gem install pg

但是最后一个命令没有成功,并给出以下错误:

  

构建原生扩展。这可能需要一段时间...错误:错误   安装pg:

     

错误:无法构建gem原生扩展。

    /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb checking for pg_config... yes Using config values from
     

的/ usr / local / bin中/ pg_config    * extconf.rb失败* 由于某些原因无法创建Makefile,可能缺少必要的库和/或标头。校验   mkmf.log文件以获取更多详细信息。您可能需要配置   选项。

     

/Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in   `try_do':编译器无法生成可执行文件。

     

(RuntimeError)您必须先安装开发工具。从   /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:461:in   来自extconf.rb的try_link0' from /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:476:in try_link':39:在`'

我猜这个问题与 Xcode开发者工具有关。我将Xcode更新到最新版本,但这并没有解决问题。你知道怎么解决吗?

8 个答案:

答案 0 :(得分:22)

你说这个问题与Xcode开发者工具有关。确保安装所有开发人员工具并不是一个坏主意(而不是像上一个答案中提到的那样单独安装gcc):

  1. 打开Xcode
  2. 在应用程序菜单项“Xcode”中选择Open Developer Tool>更多开发者工具......
  3. 这会将您带到一个拥有大量软件的网站。继续下载并安装“Xcode的命令行工具(OS X Mavericks) - 2013年10月下旬”。
  4. 您现在可以正确安装gem。
  5. 对于其他任何人在Mac OS X Mavericks上重新安装Postgres 9.3.0应用程序(即你没有使用自制程序安装Postgres),你可能会注意到即使你可以构建pg gem你因为dylib问题而无法运行rake:

    rake aborted!
    dlopen(/Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @loader_path/../lib/libpq.5.dylib
      Referenced from: /Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle
      Reason: image not found - /Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle
    

    不幸的是,这是Postgres 9.3.0的当前发行版本的一个问题。回到以前的版本将为您解决:

    1. 卸载pg gem:gem uninstall pg
    2. 删除9.3.0 Postgres应用,将其拖至回收站并清空垃圾箱
    3. 在此处安装Postgres应用版本9.2.2.0:http://postgres-app.s3.amazonaws.com/PostgresApp-9-2-2-0.zip
    4. 重新安装pg gem:gem install pg
    5. *感谢comment上jhiro009的this thread指示我在问题的最后一个Postgres应用程序部分的正确方向,尽管他提到的9.2.4.3版本不适用于我

答案 1 :(得分:19)

使用homebrew为我修复此问题:

gem uninstall pg
brew install apple-gcc42
gem install pg

编辑:我也手动安装了“devtools”

xcode-select --install

答案 2 :(得分:8)

在OS X Mavericks上

sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2
gem uninstall pg; gem install pg;

适用于自制的Postgresql(9.3.1)安装和Apple Command Line Tools安装(第0.17.0页)。

答案 3 :(得分:3)

之前的解决方案都不适用于我(我刚刚升级到Mavericks并更新了XCode)。相反,我安装了Postgress.app。并打电话给

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

答案 4 :(得分:3)

这些解决方案都不适用于我,我也不想使用MacPorts。尝试下载Postgres App并将其放入Application目录。

然后,指定新下载的pg_config的位置,该位置位于应用内:

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

如果您遇到缺少的标题问题,请尝试指定应用的include目录:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/MacOS/include/'

答案 5 :(得分:2)

如果您只是想快速修复,请将以下内容添加到您的database.yml文件中:

host: localhost

我遇到了确切的问题,添加了该行,现在一切都很顺利。

答案 6 :(得分:0)

我很幸运地听到New-Bamboo的那些人的这篇文章:

3 Quick Tips for Coding with OS X 10.9 Mavericks

安装xcode dev工具后,第三步将所有内容排序:

brew tap homebrew/versions && brew install apple-gcc42
brew link --force apple-gcc42
ln -nsf $(which gcc-4.2) /usr/bin/gcc-4.2

答案 7 :(得分:-1)

我第一次尝试安装pg时出现此问题。通过各种试验和错误,我发现了一些有效的方法。值得庆幸的是,当小牛队打破一切时,我的笔记也奏效了。

希望这会有所帮助:

不要做任何酿造。

下载enterpriseDB一键安装程序,安装并运行。 如果它不起作用,请通过命令行(无人参与模式)运行它,它将更改内存设置。重新启动,再次运行。

使用您提供的密码为用户调用postgres。还安装了pgadmin III。

在app目录中运行:

env ARCHFLAGS =“ - arch x86_64”gem install pg - --with-pg-include = / Library / PostgreSQL / 9.2 / include / --with-pg-lib = / Library / PostgreSQL / 9.2 sudo env ARCHFLAGS =' - arch i386'gem install pg / lib /

打开pgadmin3并为rails创建用户和密码,然后将其添加到config。

psql [database_name]#检查你的数据库。或者使用pgadmin III