更新到OS X 10.9 Mavericks后,使用Rails和postgres引发麻烦

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

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

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

 gem uninstall pg brew install apple-gcc42 gem install pg 

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

 xcode-select --install 

你是对的,问题与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 

不幸的是,这是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版本对我不起作用。

在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页)。

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

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

这些解决方案都不适用于我,我也不想使用MacPorts。 尝试下载Postgres应用程序并将其放入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/' 

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

 host: localhost 

我有确切的问题,添加了这一行,现在一切都很顺利。

在New-Bamboo的家伙发表这篇文章后,我很幸运:

使用OS X 10.9 Mavericks进行编码的3个快速提示

安装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 

我第一次尝试安装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’gemon install pg / lib /

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

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