Не удается установить pg gem в Mavericks с помощью Postgres.app
Я пытаюсь установить pg gem для использования с Postgres.app на моей локальной машине. Я бегу Маверикс.
Postgres.app установлен и работает нормально, но я не могу заставить гем работать. Я сделал следующее:
- Использовал команду 'env ARCHFLAGS="-arch x86_64" gem install pg -- -with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config' из документации Postgres.app
- Обновил Homebrew и установил Apple GCC 4.2
- Установленные инструменты разработчика Xcode
- Обновил мою переменную $PATH для ссылки на каталоги bin и Postgres.app и lib
Все безуспешно. Вот конкретное сообщение об ошибке, которое я получаю:
Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
--with-pg
--without-pg
--with-pg-config
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/
Буду признателен за любую помощь, которую вы можете предложить. Спасибо!
8 ответов
Вы, вероятно, ошиблись --with-pg-config
Проверьте, действительно ли это там.
Вы можете найти правильный путь к pg_config
с:
find /Applications -name pg_config
В последней версии Postgres.app путь:
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
В моем случае (с запущенным Postgres.app v9.3.4.2) он работал только при добавлении флагов архитектуры среды:
env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Находясь на новом Mac, вот что мне нужно было сделать:
- Установите инструменты Xcode из магазина приложений
- Откройте инструменты Xcode и примите лицензию
Теперь запустите (мы надеемся, что это проверенная на будущее команда):
version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .
Если у вас возникли проблемы, вы можете немного устранить их, проверив фактическую ошибку в файле mkmf.log, которую вы можете найти, запустив (при использовании rvm):
cd ~/.rvm ; find . -name mkmf.log | grep pg
Я смог установить pg с помощью этой команды
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
Я нашел свой путь, запустив
sudo find / -name "pg_config"
и я успешно установил pg-0.17.1
Добавление postgress bin dir к пути также помогает. просто добавьте мусорное ведро к этому как это. при последних установках последняя символическая ссылка гарантирует, что этот путь должен быть "стабильным" для будущих обновлений версии.
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Чтобы решить эту проблему, я установил postgres, используя homebrew, используя следующее в окне терминала:
brew install postgres
Доморощенный можно найти здесь
Это сработало для меня:
gem install pg -- --with-pg-config=`which pg_config`
Для дальнейшего использования, поскольку многие из нас публикуют новые пути для новых номеров версий:
В настоящее время я вижу символическую ссылку latest
в /Applications/Postgres.app/Contents/Versions/
,
Вы должны иметь возможность просто сделать:
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
И забудьте о номере версии. Это может не относиться к каждой (более старой) версии, но я сам искал фрагмент, который мог бы сохранить и использовать повторно.