13

我在 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 `<main>'


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 `<top (required)>'
    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 `<main>'

任何帮助将不胜感激。仅供参考,我还尝试使用 mysql 构建应用程序,并且基本上得到了相同的堆栈。所以我很确定我错过了某种开发人员构建工具,但我只是不知道哪些。:(

4

10 回答 10

15
  1. 导出 ARCHFLAGS='-arch x86_64'
  2. 导出 PATH=/Library/PostgreSQL/9.1/bin:${PATH}
  3. 宝石安装 pg
于 2012-01-16T14:01:55.673 回答
15

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

brew install postgresql. 

最终正确安装了 postgres,并且为我解决了这个问题。

于 2011-08-29T18:21:20.157 回答
7

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

export PATH=/Applications/Postgres.app/Contents/MacOS/bin:${PATH}
于 2013-08-31T23:59:02.307 回答
5

对我有用的是 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.
于 2011-11-20T22:39:27.500 回答
5

我遇到过同样的问题。对我来说,解决方法是:

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

于 2012-04-30T19:28:32.570 回答
2

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

rvm get head
rvm install 1.9.2
于 2012-05-03T11:49:17.950 回答
0

我和你在同一个 OSX 和 XCode 版本上:bundle install with pg 0.11.0 对我来说很好。但是,我发现这篇文章可能可以帮助您 修复-您拥有-安装-开发-工具-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
于 2011-04-27T19:13:06.233 回答
0

我被困在我的捆绑安装上 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

我刚刚运行了以下命令,神奇的事情发生了。捆绑配置 build.pg --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

于 2014-12-26T10:25:07.810 回答
0

简单的解决方案:

  1. brew install postgresql
  2. 使用 sudo 权限安装 gem:像这样: sudo gem install pg -v '0.17.1'
于 2014-04-26T08:30:59.013 回答
0

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

1)在您的 ~/.bash_profile 中写入以下行

出口 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) 捆绑安装

于 2015-09-21T19:10:00.193 回答