简体   繁体   English

在osx上安装pg gem时出错

[英]Error installing pg gem on osx

I am on osx 10.6.7 trying to run bundle install on a new rails 3.0.7 app and it keeps failing when trying to build the pg gem. 我在osx 10.6.7上尝试在新的Rails 3.0.7应用程序上运行捆绑安装,并且在尝试构建pg gem时一直失败。 It keeps telling me that I have need the developer tools. 它一直告诉我,我需要开发人员工具。 But as far as I can tell I have the developer tools installed. 但据我所知,我已经安装了开发人员工具。

Here is the output of xcodebuild -version 这是xcodebuild -version的输出

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

Here is the output of the failed pg gem build 这是失败的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>'

Any help would be immensely appreciated. 任何帮助将不胜感激。 FYI I also tried building the app with a mysql and essentially got the same stack. 仅供参考,我还尝试使用mysql构建应用程序,并且基本上得到了相同的堆栈。 So I'm pretty sure I'm missing some sort of developer build tools, but I just don't know which ones. 因此,我敢肯定我会缺少某种开发人员构建工具,但我只是不知道哪个工具。 :( :(

I had the exact same problem when running bundle install in a Rails app. 在Rails应用程序中运行捆绑安装时,我遇到了完全相同的问题。 I installed homebrew and then ran 我安装了自制软件,然后运行

brew install postgresql. 

That finally installed postgres correctly and the issue was fixed for me. 终于正确安装了postgres,这个问题为我解决了。

  1. export ARCHFLAGS='-arch x86_64' 出口ARCHFLAGS ='-arch x86_64'
  2. export PATH=/Library/PostgreSQL/9.1/bin:${PATH} 导出PATH = / Library / PostgreSQL / 9.1 / bin:$ {PATH}
  3. gem install pg 宝石安装pg

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

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

I had the same issue. 我遇到过同样的问题。 For me the fix was: 对我来说,解决方法是:

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

What worked for me was Zag Zag's comment: 对我有用的是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.

I also ran into this issue, for me the answer was updating RVM of all things. 我也遇到了这个问题,对我来说答案是更新所有事物的RVM。

rvm get head
rvm install 1.9.2

The simple solution: 简单的解决方案:

  1. run brew install postgresql 运行brew install postgresql
  2. install the gem with sudo permissions: like so: sudo gem install pg -v '0.17.1' 使用sudo权限安装gem:像这样: sudo gem install pg -v '0.17.1'

I was stuck on my bundle install for 3 days. 我在捆绑安装中停留了3天。 Tried Everything like adding env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.5_1/bin/pg_config 尝试了一切,例如添加env ARCHFLAGS =“-arch x86_64” gem install pg---with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

I was able to see pg gem getting installed after this command but still it was not installing from bundle install, which was a pain because I dint know what to write in Gemfile except gem 'pg' 我可以看到在执行此命令后安装了pg gem,但仍然没有从捆绑安装中安装,这很痛苦,因为我不知道在Gemfile中写什么,除了gem'pg'

The thing which finally worked for me was to find that my pg_config was in /Library/PostgreSQL/9.3/bin/pg_config and by default the Gemfile bundle install looks in /usr/local/bin/pg_config 最终对我有用的是发现我的pg_config位于/Library/PostgreSQL/9.3/bin/pg_config中,并且默认情况下,Gemfile捆绑安装位于/ usr / local / bin / pg_config中

I just ran the following command and magic happened. 我只运行了以下命令,魔术就发生了。 bundle config build.pg --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config 捆绑配置build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

Some correction. 一些更正。 For those who have installed postgres using homebrew. 对于那些使用自制软件安装了postgres的人。

1) write the following line in your ~/.bash_profile 1)在〜/ .bash_profile中写以下行

export ARCHFLAGS="-arch x86_64" export ARCHFLAGS =“-arch x86_64”

2) restart console 2)重启控制台

3) execute following command 3)执行以下命令

bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.3.5_1/bin/pg_config (this has to be your pg config address, can differ for each depending on versions of postgres) bundle config build.pg --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config (这必须是您的pg config地址,根据postgres的版本可能有所不同)

4) Install pg once locally by running this command 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 sudo env ARCHFLAGS =“-arch x86_64” gem install pg---with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

5) bundle install 5)捆绑安装

I'm on the same OSX and XCode version as you are: bundle install with pg 0.11.0 works fine to me. 我和您使用的是相同的OSX和XCode版本:pg 0.11.0捆绑安装对我来说很好。 However, I found this article that might be able to help you fixing-the-you-have-to-install-development-tools-first-error-with-nokogiri 但是,我发现本文可能能够帮助您修复带有nokogiri的安装开发工具第一个错误

If you're using rvm, you can try: 如果您使用的是rvm,则可以尝试:

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

Here my stack: 这是我的堆栈:

[ 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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM