更新到OS X 10.9 Mavericks后,对Rails和postgres的麻烦

Abr*_*odj 20 postgresql ruby-on-rails pg osx-mavericks

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

gem uninstall pg
gem install pg
Run Code Online (Sandbox Code Playgroud)

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

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

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

    /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb checking for pg_config... yes Using config values from
Run Code Online (Sandbox Code Playgroud)

/ 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 try_link0' from /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:476:in try_link'来自extconf.rb:39:in''

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

小智 22

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

  1. 打开Xcode
  2. 在应用程序菜单项"Xcode"中选择Open Developer Tool> More Developer Tools ...
  3. 这会将您带到一个包含大量软件的站点.继续下载并安装"Xcode的命令行工具(OS X Mavericks) - 2013年10月下旬".
  4. 您现在可以正确安装gem.

对于其他任何人在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
Run Code Online (Sandbox Code Playgroud)

不幸的是,这是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

*感谢jhiro009 对此主题的评论,指出我在问题的最后一个Postgres应用程序部分的正确方向,尽管他提到的9.2.4.3版本对我不起作用.


cod*_*mev 19

使用自制软件为我解决了这个问题:

gem uninstall pg
brew install apple-gcc42
gem install pg
Run Code Online (Sandbox Code Playgroud)

编辑:我也手动安装"devtools"

xcode-select --install
Run Code Online (Sandbox Code Playgroud)

  • 啊.我(不是海报)希望避免安装brew. (2认同)
  • brew很容易安装,可以避免将来的头痛; 但如果你真的不想或不能,你总是可以尝试升级Apple糟糕的GCC:https://github.com/kennethreitz/osx-gcc-installer (2认同)

小智 8

在OS X Mavericks上

sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2
gem uninstall pg; gem install pg;
Run Code Online (Sandbox Code Playgroud)

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