Під час встановлення 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.

Як це виправити?


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 install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092 07.03.15

182

Тут виникла якась помилка Встановлення PG gem на OS X - неможливість побудови власного розширення

Щоб встановити залежності на Ubuntu, спробуйте:

sudo apt-get install libpq-dev

і це

gem install pg

5
Я на Mac, що мені робити?
Deekor

1
Слідом за підручником на railstutorial.org. Це те, що вам потрібно зробити для Монетного двору. Дякую.
Крістофер Шнайдер

railstutorial.org - платний підручник; будь-які інші ідеї?
Terra Ashley

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 ~ / Library / LaunchAgents
  6. launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. rake db: create: all
  9. rake db: мігрувати
  10. рейки s

ПРИМІТКА: за потреби замініть номер версії на кроці 3.


10

Раніше працювала відповідь зі старою версією

Я встановив під Mac OSX Mavericks, встановивши програму postgres (Версія 9.2.2.0) з www.postgresapp.com . Основна проблема полягала в тому, що оскільки postgres було встановлено через програму, файл конфігурації знаходиться в іншому місці, яке не є типовим при встановленні без postgressapp. тому нам потрібно сказати gem, де знайти цей файл, виконавши:

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

Сподіваюся, це допоможе


1
Це було моє рішення (OSX)
raulriera

Якщо це ні для кого не працює, для 9.3 конфігураційний файл переміщено - див. Прийняту відповідь.
Deekor

5

Якщо встановлення gem не вдається, спробуйте виконати таку команду:

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 для компіляції власного розширення.


Як щодо налаштування 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 gem до вашого gemfile так ...

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

Потім використовуйте bundle install --without production



1

Я щойно створив новий Macbook Pro, який був побудований за допомогою Каталіни.

Що мені вдалося:

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

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

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

bundle install --path постачальника / набору

Це зробило це для мене.


0

Мені потрібно було використовувати судо

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

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.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.