Установка PG gem на OS X - не удалось собрать собственное расширение

183

Кажется, у многих других были проблемы с установкой pg gem. Ни одно из решений, предложенных для других, не сработало для меня.

Я попытался установить pg gem и postgres.app. Камень pg не будет установлен. Первая ошибка, которую я получаю:

Произошла ошибка при установке pg (0.17.0), и Bundler не может продолжить. Убедитесь, что это gem install pg -v '0.17.0'успешно, прежде чем связывать.

Советы по установке относительно указания моей установки gem на конфигурацию для pg терпят неудачу со следующим сообщением об ошибке (с которым столкнулись многие другие на этом форуме):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Я не знаю, как найти или получить доступ к этому файлу журнала для поиска дополнительных подсказок.

Я также получаю сообщение об ошибке (команда не найдена), когда я пытаюсь использовать команду sudo apt-get install. Я искал этот форум в течение последних 6 часов, пробуя каждый совет, чтобы заставить pg работать с моим проектом rails.

Я не могу найти совет о том, как изменить путь, или, в частности, какие изменения необходимы. Мой which pg_configвозвращает источник файла. Я использовал это с командой для установки pg, используя этот конфиг. Это не удается.

Есть так много людей, которые имели проблемы с этим. Многие ответы предлагают доморощенный. Я должен был удалить это, потому что это подняло другие проблемы.

Мел
источник
1
Привет, пара вопросов, которые помогут в будущем: - Ты на Mac, верно? Правильно пошло не так с домашним пивом? (ps, как вы заметили, apt-get предназначен только для Ubuntu (и его двоюродных братьев на основе Debian)) - какая у вас версия postgres? попробуйте запустить psql -vв своей оболочке. - какую версию ruby ​​вы используете? Похоже на 1.9.3, но что ruby -vтебе дает?
rmosolgo
Я должен добавить, что мой psql добавлен в: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; выход; psql (9.3.0), но который psql возвращает: usr / bin / psql
Mel
Привет, большое спасибо за просмотр этого. Мой psql v 9.3.0 и ruby ​​v 1.9.3
Мел
1
Смотрите ответ @ paninapress для Postgres.app. Он отлично работал для меня и не требует установки другого экземпляра Postgres.
Хамон Холмгрен

Ответы:

442

Та же самая ошибка для меня, и я не испытывал ее, пока я не загрузил OS X 10.9 (Mavericks). Вздох, еще одна головная боль при обновлении ОС.

Вот как я это исправил (с помощью homebrew):

  • Установите другую сборку Инструментов XCode (ввод brew updateв терминале побудит Вас обновить инструменты сборки XCode)
  • brew update
  • brew install postgresql

После этого gem install pgу меня сработало.

shicholas
источник
7
После двух дней головной боли, пытаясь исправить мой Rails db после обновления Mavericks, это исправило это для меня, большое спасибо.
Дебора
4
Это сработало и для меня - на новой установке Mavericks. Спасибо!
marcamillion
1
Спасибо за спасение моего здравомыслия!
Джим
1
Еще работает. Проект на Ruby 2.2.0 для поддержки старого приложения, но все равно СПАСИБО.
Тристан Циммерман
1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal
223

Если вы используете Ubuntu, попробуйте установить следующий файл lib

sudo apt-get install libpq-dev

а потом

gem install pg

работал на меня.

сандеш кота
источник
4
У меня тоже сработало. Использую Ubuntu 13.10.
Рафаэлькин
4
Просто убедитесь, что вы печатаете правильно. Его нет libpg-dev; Это Q, а не P! Мне потребовалось 10 минут, чтобы понять это трудным путем.
tir38
1
Для Amazon Linux этоyum install postgres-devel
andrewtweber
1
Работал для меня на Ubuntu 14 !!
18 байтов
6
Для CentOSyum install postgresql-devel
сентября
49

Я использую OS X Mavericks (версия 10.9)

и когда я запускаю вышеупомянутое, я получаю следующее сообщение: Если сборки PostgreSQL 9 терпят неудачу, и у вас установлена ​​версия 8.x.

Поэтому я запускаю следующую команду:

ARCHFLAGS="-arch x86_64" gem install pg

и это сработало для меня, я надеюсь, что это поможет кому-то :)

Джон
источник
2
+1, я пробовал другие, но в итоге я установил pg с помощью этого решения.
BMW
1
+1, аналогично, это было решением и для меня, где мой postgresql уже был установлен через brew. Спасибо Джон за пост.
Джейсон Хукстра
5
nb При установке в качестве пользователя root (по какой-либо причине), sudo идет перед переменной:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman
На самом деле, мне нужно это каждый раз, когда я бегу, bundle installпоэтому я положил его внутрь ~/.bash_profileкак экспорт :)
Ja͢ck
42

Хорошо, у меня также была эта проблема (psql - v 9.3.0 и ruby ​​- v 2.1.2), и решение, которое работало для меня, было сначала установить параметры конфигурации пакета:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Этот ответ, наконец, помог мне разобраться: https://stackoverflow.com/a/9235107/3546680

paninapress
источник
6
Этот метод предпочтителен, если вы используете postgres.app. Использование Homebrew может решить проблему с собственным расширением, но наличие двух приложений postgres создаст конфликты (например, распределение портов). См. Также ответ Sayanees по адресу stackoverflow.com/questions/19569031/…
Epigene
4
Это определенно правильный ответ для Postgres.app.
Хамон Холмгрен
Хорошо работает на Мохаве, попытался успешно несколько минут назад.
microspino
23

Я пытался все в течение нескольких часов, но следующее наконец исправило это (я на OS X 10.9.4):

  1. Установите инструменты командной строки Xcode (сайт разработчика Apple)
  2. brew удалить postgresql
  3. brew установить postgresql
  4. ARCHFLAGS = "- arch x86_64" gem install pg
Али Яздани
источник
Спасибо. Я использовал sudo для шага 4, это плохо? Как я могу избежать этого?
Рой
@Roy - рад помочь :) - должно быть в порядке, вероятно, стоит избегать использования sudo, так как я считаю, что он установит его для всех пользователей, но если вы единственный пользователь в системе, чем его, вероятно, не так уж и много ,
Али Яздани
brew uninstall postgresqlи brew install postgresqlне являются необходимыми шагами на OS X 10.10 и 10.11. Просто gem uninstall pg(и удалите все версии), затем убедитесь, что вы bundleили еще gem install pgраз, и родные расширения будут перестроены с новыми инструментами командной строки для этой версии OS X.
Оливье Лакан
7

легкий шаг

  1. brew install postgresql
  2. gem install pg -v 'your version'
Джеймс Дела Круз
источник
6

Точно так же после установки Mavericks bundle updateвыкидывал ошибку в гем pg, который используется только на производстве, а не локально.

Я использую Brew для управления своими пакетами, и postgresql уже был установлен, но все равно я получал ошибку «no pg_config».

Решение было просто brew uninstall postgresqlтогда brew install postgresql. После чего я сразу смог успешно бежать bundle update.

Шеннон Перкинс
источник
6

Я считаю, что «правильным» ответом было бы сначала правильно настроить PATH для Postgres.app, добавив следующее ~/.profile( .zshrcили, ~/.zprofileесли используется ZSH):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Затем откройте новую вкладку или окно в терминале и установите pgкамень с помощью:

ARCHFLAGS="-arch x86_64" gem install pg

Документировано здесь:

Матиас Корхонен
источник
5

На OSX с Postgres, установленным в / Applications, я просто запускаю следующую команду (измените 0.20 и 9.4 в соответствии с вашей версией)

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

У вас должно быть :

Создание собственных расширений с помощью: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Это может занять некоторое время ... Успешно установленный pg-0.20.

jbheren
источник
Можете ли вы объяснить, почему нам пришлось использовать дефис 2 в дополнительное время, прежде чем аргумент был фактически предоставлен?
Акаш Агарвал
3

Я провел день на этом, и вот как я это исправил:

Я обнаружил, что глобальное значение build.pg было установлено на: /opt/local/lib/postgresql91/bin/pg_config а это не то место, где был установлен postgres.

Я исправил это, заменив значение build.pg на: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config где моя установка postgresql.

HosseinToussi
источник
1

Пытаться:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
источник
0

Решено! Я обнаружил отсутствие системы для PostgreSQL в системе. Только два шага решили это:

brew install postgresql

Тогда беги

gem install pg

user6756462
источник
0

Для тех, кто не заинтересован в использовании brew.

  1. Скачать PostgreSQLприложение.
  2. Следуйте инструкциям по умолчанию для MacOS, чтобы установить его.
  3. Желательно бежать PostgreSQl.
  4. Запустите gem install pg -- --with-pg-config=/ path / to / postgress / в / your / apps / folder / `
    • Например, в моей машине это /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Эсмаил МИРЗАЕЕ
источник