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
Error installing pg gem on osx
提问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
- export ARCHFLAGS='-arch x86_64'
- export PATH=/Library/PostgreSQL/9.1/bin:${PATH}
- gem install pg
- 出口ARCHFLAGS='-arch x86_64'
- 导出路径=/Library/PostgreSQL/9.1/bin:${PATH}
- 宝石安装 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:
简单的解决办法:
- run
brew install postgresql
- install the gem with sudo permissions: like so:
sudo gem install pg -v '0.17.1'
- 跑
brew install postgresql
- 使用 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)捆绑安装