Произошла ошибка при установке pg (0.17.1), и Bundler не может продолжить

87

Я только что установил Rails 4.0.2и при создании нового приложения на этапе сборки я получаю:

Installing pg (0.17.1) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/Dee/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
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.

Как это исправить?

Deekor
источник
1
Вы можете добавить тег osx. Решение, похоже, может быть связано именно с вашей ОС.
Винс
Возможно, вы захотите посетить. stackoverflow.com/questions/3116015/… . Надеюсь, что одно из этих решений поможет
Яна Агун Сисванто

Ответы:

144

Я использую Mac под управлением Mavericks. Моим решением было установить Postgres .

А затем в терминале установите с помощью homebrew с конфигурацией:

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

Примечание. Этот ответ был отредактирован для использования latestсимволической ссылки, которая в настоящее время включена в поставляемые версии приложения Postgres.

Предыдущие версии предлагали:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Боб О'Брайен
источник
Да, моя тоже была в другом месте. Спасибо за ответ.
Deekor
Верно, Боб, версия postgresapp, в которой это работало для меня, была Версией 9.2.2.0, поэтому они, должно быть, изменили это местоположение в выпуске 9.3.
Робертибирис
1
И теперь, по состоянию на 22.01.15 мы смотрим на выпуск 9.4, приятно видеть, что они постоянно обновляют его - «gem install pg - --with-pg-config = / Applications / Postgres. app / Contents / Versions / 9.4 / bin / pg_config "
corprew
3
Я был в спешке и пропустил часть этого ответа, в которой говорится «установить с помощью домашнего приготовления». Этот ответ сработал для меня после того, как я сделалbrew update; brew install postgres
Деннис
6
В своем решении, пожалуйста, добавьте версию, другая последняя версия PG gem будет установлена:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092,
183

Здесь сообщается о какой-то ошибке. Установка PG gem на OS X - не удалось создать собственное расширение.

Чтобы установить зависимости в Ubuntu, попробуйте следующее:

sudo apt-get install libpq-dev

и это

gem install pg
Талгат Медетбеков
источник
5
Я на Mac, что мне делать?
Deekor
1
Следуя руководству на railstutorial.org. Это то, что вам нужно сделать для Mint. Спасибо.
Кристофер Шнайдер
railstutorial.org - платный учебник; любые другие идеи?
Терра Эшли
21

корень приложения:

  1. варить обновление
  2. варить установить postgres
  3. gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.4 / bin / pg_config
  4. установка пакета
  5. ln -sfv /usr/local/opt/postgresql/*.plist ~ / Библиотека / LaunchAgents
  6. launchctl load ~ / Библиотека / LaunchAgents / homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. rake db: create: all
  9. rake db: миграция
  10. рельсы s

ПРИМЕЧАНИЕ: при необходимости замените номер версии на шаге 3.

Knice
источник
10

Ранее рабочий ответ со старой версией

Я установил Mac OSX Mavericks с установленным приложением postgres (версия 9.2.2.0) с сайта www.postgresapp.com . Основная проблема заключалась в том, что, поскольку postgres был установлен через приложение, файл конфигурации находится в месте, которое не является местоположением по умолчанию при его установке без postgressapp. поэтому нам нужно указать гему, где найти этот файл:

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

Надеюсь, это поможет

Робертибирис
источник
1
Это было мое решение (OSX)
raulriera
Если это ни у кого не работает, для версии 9.3 файл конфигурации перемещен - см. Принятый ответ.
Deekor
5

Если gem install pg не удается, попробуйте следующую команду:

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

... из документации PostgreSQL.app

Винс
источник
2
Поскольку официальное приложение недавно изменило имя на «Postgres93.app», команда должна быть такой: env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Blackcoat
1
для меня это сработало с: env ARCHFLAGS="-arch x86_64" gem install pg
dnlcrl
4

Похоже, у вас не установлен PostgreSQL. pgКамень требует некоторых заголовков из PostgreSQL компилировать родное расширение.

Tungd
источник
Как насчет вашей установки Ruby / Bundler? Вы используете Mac OS X или Linux? а если вы используете Mac OS X, вы установили PostgreSQL через homebrewили PostgreSQL.app?
tungd
Я на Mac. Я установил через приложение
Deekor
У меня установлена ​​0.17.0. Есть ли вред в использовании этого с рельсами 4?
Deekor
Затем попробуйте бежать bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_configи bundleснова бежать . Измените путь конфигурации, если вы устанавливаете приложение ~/Applicationне на/Application
tungd
3

Пришлось все объединить и использовать

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Марк Ван
источник
3

Если вы используете что-то другое, кроме Postgres в разработке и Postgres только в производстве, вы можете добавить гем pg в свой гем-файл следующим образом ...

group :production do
  gem 'pg',             '0.17.1'
end

Затем используйте bundle install --without production

j8d
источник
3

Для пользователей CentOS:

sudo yum install postgresql-devel

а также

gem install pg
Вебстер
источник
1

Я только что установил новый Macbook Pro, который был предварительно собран с Catalina.

Что сработало для меня:

  1. Установите Postgres отсюда: https://postgresapp.com/
  2. Добавьте export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"в свой .zshenv, так как Z shell теперь является терминалом по умолчанию.
Хенрик Холм
источник
0

После установки Postgres мне пришлось запустить следующую команду

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

После этого установка пакета работает отлично!

Надеюсь, это поможет

почокоста
источник
0

Мне удалось обойти эту ошибку следующим образом:

  • cd в папку приложения, а затем установите версию ruby ​​локально. Я использую рубин 2.1.2.

rbenv локальный 2.1.2

  • вместо того, чтобы просто запускать установку пакета, установите драгоценные камни в vendor / bundle

bundle install --path vendor / bundle

Это сделало это для меня.

Богдан Нечита
источник
0

Мне нужно было использовать sudo

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
gypsyDev
источник
0

У меня была проблема с Amazon, и я не мог использовать apt-get. Для меня работали:

    sudo yum install postgresql-devel

тогда:

    bundle install

и попробуй еще раз:

    rails serve
Мауриси Абад
источник
0

Если вы устанавливали через Homebrew; gem install pg -- --with-pg-config=/usr/local/bin/pg_config. Работает с Ruby 2.4.6 и pg 0.20.0.

Зикаделич
источник
-2

Меня устраивает

rvm list gemsets
rvm use ruby-2.4.1
bundle

ошибка [! [решена с помощью rvm use ruby] 2

DevMasterAryan
источник
Вы не устанавливаете pgдрагоценный камень здесь
zykadelic