在osx上安装pg gem时出错

我在osx 10.6.7尝试在新的rails 3.0.7应用程序上运行bundle install,并且在尝试构建pg gem时它仍然失败。 它一直告诉我,我需要开发人员工具。 但据我所知,我已经安装了开发人员工具。

这是xcodebuild -version的输出

Xcode 3.2.6 Component versions: DevToolsCore-1809.0; DevToolsSupport-1806.0 BuildVersion: 10M2518 

这是失败的pg gem构建的输出

 /Users/bm/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb --with-pg-config=/Library/PostgreSQL/8.4/bin/pg_config Using config values from /Library/PostgreSQL/8.4/bin/pg_config checking for libpq-fe.h... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/bm/.rvm/rubies/ruby-1.9.2-head/bin/ruby --with-pg --without-pg --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include=${pg-dir}/include --with-pg-lib --without-pg-lib=${pg-dir}/lib --with-pg-config /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:368:in `try_do': The complier failed to generate an executable file. (RuntimeError) You have to install development tools first. from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:452:in `try_cpp' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:853:in `block in find_header' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:693:in `block in checking_for' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:280:in `block (2 levels) in postpone' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:280:in `block in postpone' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:276:in `postpone' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:692:in `checking_for' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/mkmf.rb:852:in `find_header' from extconf.rb:31:in `' Gem files will remain installed in /Users/bm/.rvm/gems/ruby-1.9.2-head@rc_search/gems/pg-0.11.0 for inspection. Results logged to /Users/bm/.rvm/gems/ruby-1.9.2-head@rc_search/gems/pg-0.11.0/ext/gem_make.out from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/rubygems/installer.rb:486:in `block in build_extensions' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/rubygems/installer.rb:446:in `each' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/rubygems/installer.rb:446:in `build_extensions' from /Users/bm/.rvm/rubies/ruby-1.9.2-head/lib/ruby/1.9.1/rubygems/installer.rb:198:in `install' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/source.rb:100:in `install' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/installer.rb:55:in `block in run' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `block in each' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/installer.rb:44:in `run' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/installer.rb:8:in `install' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/cli.rb:217:in `install' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/vendor/thor/task.rb:22:in `run' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/vendor/thor.rb:246:in `dispatch' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/lib/bundler/vendor/thor/base.rb:389:in `start' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/gems/bundler-1.0.0/bin/bundle:13:in `' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/bin/bundle:19:in `load' from /Users/bm/.rvm/gems/ruby-1.9.2-head@global/bin/bundle:19:in `' 

任何帮助都会非常感激。 仅供参考我还尝试使用mysql构建应用程序,并且基本上获得了相同的堆栈。 所以我很确定我缺少某种开发人员构建工具,但我只是不知道哪些。 🙁

在Rails应用程序中运行bundle install时,我遇到了完全相同的问题。 我安装了自制软件然后运行

 brew install postgresql. 

这最终正确安装了postgres,问题对我来说是固定的。

  1. export ARCHFLAGS =’ – arch x86_64′
  2. export PATH = / Library / PostgreSQL / 9.1 / bin:$ {PATH}
  3. gem install pg

如果您在osx上使用PostgreSQL应用程序,则可能需要更改以下路径(因为二进制文件和配置文件的位置发生更改),而不是lesyk的答案中显示的路径:

 export PATH=/Applications/Postgres.app/Contents/MacOS/bin:${PATH} 

我遇到过同样的问题。 对我来说,修复是:

sudo ln -s gcc /usr/bin/gcc-4.2

对我有用的是Zag Zag的评论:

 ~/projects/foo$ env ARCHFLAGS="-arch x86_64" gem install pg Building native extensions. This could take a while... Successfully installed pg-0.11.0 1 gem installed Building YARD (yri) index for pg-0.11.0... ~/projects/foo$ bundle ... Using pg (0.11.0) ... Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 

我也碰到了这个问题,对我来说答案是更新所有东西的RVM。

 rvm get head rvm install 1.9.2 

我和你一样使用相同的OSX和XCode版本:使用pg 0.11.0的bundle install对我来说很好。 但是,我发现这篇文章可能能帮助你修复你必须安装的开发工具 – first-error-with-nokogiri

如果你正在使用rvm,你可以尝试:

 rvm update head rvm --force install 1.9.2 gem install bundle 

我的堆栈:

 [ 08:36:26 ] > bundle install Fetching source index for http://rubygems.org/ Enter your password to install the bundled RubyGems to your system: Using rake (0.8.7) Using abstract (1.0.0) Installing activesupport (3.0.7) Installing builder (2.1.2) Installing i18n (0.5.0) Installing activemodel (3.0.7) Using erubis (2.6.6) Using rack (1.2.2) Installing rack-mount (0.6.14) Installing rack-test (0.5.7) Installing tzinfo (0.3.27) Installing actionpack (3.0.7) Using mime-types (1.16) Installing polyglot (0.3.1) Installing treetop (1.4.9) Installing mail (2.2.19) Installing actionmailer (3.0.7) Installing arel (2.0.9) Installing activerecord (3.0.7) Installing activeresource (3.0.7) Using bundler (1.0.10) Installing pg (0.11.0) with native extensions Using thor (0.14.6) Installing railties (3.0.7) Installing rails (3.0.7) Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. [ ronda@MacBook ~/Projects/rails_projects/first_app ] [ 08:42:57 ] > rails server => Booting WEBrick => Rails 3.0.7 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-04-27 20:45:27] INFO WEBrick 1.3.1 [2011-04-27 20:45:27] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10] [2011-04-27 20:45:27] INFO WEBrick::HTTPServer#start: pid=4757 port=3000 

简单的解决方案:

  1. 运行brew install postgresql
  2. 使用sudo权限安装gem:如下所示: sudo gem install pg -v '0.17.1'

我被捆绑安装了3天。 试着加入env ARCHFLAGS =“ – arch x86_64” gem install pg – –with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

我能够看到pg gem在这个命令之后安装但是它仍然没有从bundle install安装,这很痛苦,因为我知道在Gemfile中写什么除了’gem’pg’

最终对我有用的是发现我的pg_config位于/Library/PostgreSQL/9.3/bin/pg_config中 ,默认情况下,Gemfile包安装在/ usr / local / bin / pg_config中查找

我刚刚运行了以下命令并且发生了魔法。 bundle config build.pg –with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

一些修正。 对于那些使用自制软件安装postgres的人。

1)在〜/ .bash_profile中写下以下行

export ARCHFLAGS =“ – arch x86_64”

2)重启控制台

3)执行以下命令

bundle config build.pg –with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config (这必须是你的pg配置地址,根据postgres的版本可以有所不同)

4)运行此命令在本地安装一次pg

sudo env ARCHFLAGS =“ – arch x86_64”gem install pg – –with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

5)捆绑安装