macos 在 osx 上安装 pg gem 时出错

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5762131/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-21 07:58:54  来源:igfitidea点击:

Error installing pg gem on osx

ruby-on-railsrubymacosgempg

提问by Ben Matz

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. It keeps telling me that I have need the developer tools. But as far as I can tell I have the developer tools installed.

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

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. So I'm pretty sure I'm missing some sort of developer build tools, but I just don't know which ones. :(

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

回答by Owain Lewis

I had the exact same problem when running bundle install in a Rails app. I installed homebrew and then ran

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

brew install postgresql. 

That finally installed postgres correctly and the issue was fixed for me.

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

回答by lesyk

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

回答by richter

If you are using the PostgreSQL app on osx, you may need to change path the following (as the location of the binaries and config files changes) instead of the path shown in lesyk's answer:

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

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

回答by BryanH

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.

回答by ?ke Gregertsen

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

回答by philoye

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

回答by Franco Rondini

I'm on the same OSX and XCode version as you are: bundle install with pg 0.11.0 works fine to me. However, I found this article that might be able to help you fixing-the-you-have-to-install-development-tools-first-error-with-nokogiri

我与您使用的是相同的 OSX 和 XCode 版本:使用 pg 0.11.0 进行捆绑安装对我来说效果很好。但是,我发现这篇文章可能可以帮助您 修复您必须安装的开发工具第一错误与 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

回答by Shai Wininger

The simple solution:

简单的解决办法:

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

回答by Neeraj Gupta

I was stuck on my bundle install for 3 days. 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

我被捆绑安装了 3 天。尝试了一切,比如添加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,但它仍然没有从 bundle install 安装,这很痛苦,因为我不知道除了 gem 'pg' 之外在 Gemfile 中写什么

The thing which finally worked for me was to find that my pg_config was in /Library/PostgreSQL/9.3/bin/pg_configand 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

回答by Neeraj Gupta

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"

导出 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配置地址,根据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)捆绑安装