无法在Mountain Lion上安装pg gem

升级到Mountain Lion后,我遇到了很多关于Rails的麻烦。

到目前为止,我试图在互联网上搜索这些并搜索几个小时,以确保我的系统具有升级后运行rails的所有依赖关系:

  1. 我更新了我的Homebrew安装
  2. 我更新了我的RVM安装
  3. 我安装了XCode命令行工具
  4. 我按照提到安装了GCC
  5. 我将我的Ruby版本升级为

    ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-darwin10.8.0]

  6. 我的Rails版本被validation为Rails 3.2.6
  7. 我还发现Mountain Lion与Postgres有一些问题,所以我看到这篇文章 ,发现我需要将这一行添加到我的Bash配置文件中:

    export PATH="/usr/local/bin:/usr/bin:$PATH" 

现在我转到我升级之前在Snow Leopard上运行正常的Rails应用程序,当我在命令行运行rails s时,我收到以下错误:

 AM@~/Documents/RailsWS/app0815 >gem install pg Building native extensions. This could take a while... ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/AM/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb checking for pg_config... yes Using config values from /usr/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 --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/AM/.rvm/rubies/ruby-1.9.2-p290/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 --without-pg-config --with-pg_config --without-pg_config /Users/AM/.rvm/rubies/ruby-1.9.2-p290/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/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:452:in `try_cpp' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:853:in `block in find_header' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:693:in `block in checking_for' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:280:in `block (2 levels) in postpone' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:280:in `block in postpone' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:254:in `open' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:276:in `postpone' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:692:in `checking_for' from /Users/AM/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/mkmf.rb:852:in `find_header' from extconf.rb:41:in `' Gem files will remain installed in /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.14.1 for inspection. Results logged to /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.14.1/ext/gem_make.out 

当我转到Rails应用程序并尝试bundle install它在pg安装时失败。

从http://www.enterprisedb.com/products-services-training/pgdownload#osx下载postgresSQL安装程序

然后让你的路径看起来像这样:

 PATH=$PATH:/Library/PostgreSQL/9.0/bin/ gem install pg 

这样做!

注意:请在路径中正确指定postgreSQL安装版本。

更新(2015年11月10日)(取自Heroku )

在OS X上使用Homebrew:

  1. 使用以下命令安装postgresql:

    brew install postgresql

  2. 然后使用以下命令安装gem:

    gem install pg -- --with-pg-config=/usr/local/bin/pg_config

在OS X上使用MacPorts:

gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config

希望这可以帮助!

正如banditKing在他的回答中所说,需要告诉gem在哪里找到postgres二进制文件。 您可以使用Heroku( http://postgresapp.com )中优秀且简单的postgres.app附带的二进制文件来安装此gem而不是EnterpriseDb版本。 EnterpriseDB版本很棒,但是涉及开发机器的安装。

在您的系统上下载Postgres.app并将内部bin目录添加到您的路径中。 我把它放在/Applications/Postgres.app ,所以我用过

 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config 

在10.8.2,Ruby 1.9.3,pg-0.14.1和XCode CLI工具上为我工作

或者,使用Postgres应用程序。 IMO,这是在Mac上使用PostgreSQL和Rails启动和运行的最简单,最快捷的方法。

有关详细说明,请访问: http : //blog.parsalabs.com/blog/2013/09/14/installing-postgresql-don-mac-os-x-and-using-it-as-your-rails-apps-database/

安装Mavericks bundle update了pg gem上的错误。

我使用Brew来管理我的包,并且已经安装了postgresql,但我仍然收到’no pg_config’错误。

解决方法是只brew uninstall postgresql ,然后brew install postgresql 。 之后我立即能够成功运行bundle update