更新到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):
- 打开Xcode
- 在应用程序菜单项“Xcode”中选择Open Developer Tool> More Developer Tools …
- 这会将您带到一个包含大量软件的站点。 继续下载并安装“Xcode的命令行工具(OS X Mavericks) – 2013年10月下旬”。
- 您现在可以正确安装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的当前发行版本的一个问题。 回到以前的版本将为您解决:
- 卸载pg gem:
gem uninstall pg
- 删除9.3.0 Postgres应用程序,方法是将其拖至垃圾箱并清空垃圾箱
- 在这里安装Postgres应用程序版本9.2.2.0:http://postgres-app.s3.amazonaws.com/PostgresApp-9-2-2-0.zip
- 重新安装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