Ошибка при установке pg gem на osx

Я нахожусь на osx 10.6.7, пытаясь запустить установку пакета в новом приложении rails 3.0.7, и он продолжает терпеть неудачу при попытке построить жемчуг pg. Он продолжает говорить мне, что мне нужны инструменты для разработчиков. Но насколько я могу судить, у меня установлены инструменты разработчика.

Вот вывод xcodebuild -version

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

Вот результат неудачной сборки gg pg

/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/[email protected]_search/gems/pg-0.11.0 for inspection.
Results logged to /Users/bm/.rvm/gems/[email protected]_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[email protected]/gems/bundler-1.0.0/lib/bundler/source.rb:100:in `install'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/installer.rb:55:in `block in run'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `block in each'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/spec_set.rb:12:in `each'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/installer.rb:44:in `run'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/installer.rb:8:in `install'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/cli.rb:217:in `install'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Users/bm/.rvm/gems/[email protected]/gems/bundler-1.0.0/bin/bundle:13:in `<top (required)>'
    from /Users/bm/.rvm/gems/[email protected]/bin/bundle:19:in `load'
    from /Users/bm/.rvm/gems/[email protected]/bin/bundle:19:in `<main>'

Любая помощь будет очень оценена. FYI Я также попытался создать приложение с помощью mysql и получил тот же самый стек. Поэтому я почти уверен, что мне не хватает каких-то инструментов для создания разработчика, но я просто не знаю, какие из них.: (

Ответ 1

У меня была такая же проблема при запуске пакета в приложении Rails. Я установил homebrew, а затем бежал

brew install postgresql. 

Это окончательно установило postgres правильно, и проблема была исправлена ​​для меня.

Ответ 2

  • export ARCHFLAGS = '- arch x86_64'
  • export PATH =/Library/PostgreSQL/9.1/bin: ${PATH}
  • установка gem pg

Ответ 3

Если вы используете приложение PostgreSQL для osx, вам может потребоваться изменить путь следующим образом (как расположение двоичных файлов и изменений файлов конфигурации) вместо пути, показанного в ответе lesyk:

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

Ответ 4

У меня была такая же проблема. Для меня это было:

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

Ответ 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.

Ответ 6

Я также столкнулся с этой проблемой, для меня ответ был обновлением RVM всех вещей.

rvm get head
rvm install 1.9.2

Ответ 7

Я нахожусь в той же версии OSX и XCode, что и вы: установка пакета с pg 0.11.0 отлично работает для меня. Однако я нашел эту статью, которая могла бы помочь вам fixing-the-you-have-to-install-development-tools-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.
[ [email protected] ~/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

Ответ 8

Простое решение:

  • run brew install postgresql
  • установить жемчужину с разрешениями sudo: например: sudo gem install pg -v '0.17.1'

Ответ 9

Я застрял на моем комплекте в течение 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 после этой команды, но она не была установлена ​​из установки пакета, что было больно, потому что я не знаю, что писать в 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

Ответ 10

Некоторая коррекция. Для тех, кто установил postgres, используя homebrew.

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) установить пакет