Невозможно установить PG gem на моем Mac с помощью Mavericks

103

Я пытаюсь установить pg gem, чтобы снова работать с моими проектами rails. Но я получаю такую ​​ошибку:

Создание собственных расширений. Это может занять некоторое время ... ОШИБКА: Ошибка при установке pg: ОШИБКА: не удалось создать собственное расширение gem.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

сбой при сборке, попробуйте еще раз с --with-pg-config = / path / to / pg_config, проверяя наличие libpq-fe.h ... no Не удается найти заголовок libpq-fe.h * Ошибка extconf.rb * Не удалось создать Makefile по какой-то причине, возможно, из-за отсутствия необходимых библиотек и / или заголовков. Дополнительные сведения см. В файле mkmf.log. Вам могут потребоваться параметры конфигурации.

Предоставляемые параметры конфигурации: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib - без-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =. --curdir --ruby = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --with-pg_config --without-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} /

Файлы Gem останутся установленными в /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 для проверки. Результаты сохраняются в /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Я перепробовал все, что нашел в stackoverflow, но все равно получаю эту ошибку.

Если я попытаюсь установить postgresql с помощью brew, я получаю следующее предупреждение:

Предупреждение: postgresql-9.2.4 уже установлен, он просто не связан

Если я попытаюсь связать

brew link postgresql Связывание /usr/local/Cellar/postgresql/9.2.4 ... Предупреждение: не удалось связать postgresql. Отключение…

Ошибка: не удалось создать символическую ссылку: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 недоступен для записи. Вам следует изменить его разрешения.

Помогите, пожалуйста

ПРИМЕЧАНИЕ. Я уже установил инструменты командной строки для mavericks.


Если я удалю с помощью homebrew и попытаюсь установить снова, я получу эту ошибку:

==> Загрузка http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

################################################ ################ 100,0%

==> Файл исправлений src / pl / plpython / Makefile Файл исправлений contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> make install-world ==> Предостережения

Примечания к сборке

Если сборки PostgreSQL 9 дают сбой и у вас установлена ​​версия 8.x, вам может потребоваться сначала удалить предыдущую версию. См.
Https://github.com/mxcl/homebrew/issues/issue/2510

Создать / обновить базу данных

Если это ваша первая установка, создайте базу данных с помощью: initdb / usr / local / var / postgres -E utf8

Чтобы перенести существующие данные из предыдущей основной версии (до 9.2) PostgreSQL, см .:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Загрузка расширений

По умолчанию Homebrew собирает все доступные расширения Contrib. Чтобы увидеть список всех доступных расширений, из командной строки psql выполните:
SELECT * FROM pg_available_extensions;

Чтобы загрузить любое из имен расширений, перейдите к нужной базе данных и выполните: CREATE EXTENSION [extension name];

Например, чтобы загрузить расширение tablefunc в текущую базу данных, запустите: CREATE EXTENSION tablefunc;

Для получения дополнительной информации о команде CREATE EXTENSION см .:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Дополнительные сведения о расширениях см .:
http://www.postgresql.org/ документы / 9.2 / static / contrib.html

Другой

На некоторых машинах может потребоваться выделение общей памяти:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC При установке гема postgres рекомендуется включать ARCHFLAGS: ARCHFLAGS = "- arch x86_64" gem install pg

Чтобы установить драгоценные камни без sudo, см. Вики Homebrew.

Чтобы запустить postgresql при входе в систему: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Затем, чтобы загрузить postgresql сейчас: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Или , если вы не хотите / не нуждаетесь в launchctl, вы можете просто запустить: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Предупреждение: не удалось связать postgresql. Отключение ... Ошибка: brew linkшаг не был завершен успешно Формула создана, но не имеет символической ссылки в / usr / local. Вы можете попробовать еще раз, используя `brew link postgresql '==> Сводка 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 файл, 38 МБ, построено за 4,9 минуты


РЕШЕНИЕ:

Я выполняю эту команду, чтобы изменить разрешение папки:

Судо Чоун jeanosorio / usr / local / share / man / man7

затем

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... Создано 421 символических ссылок

И наконец:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Получение: pg-0.17.0.gem (100%) Создание собственных расширений. Это может занять некоторое время ... Успешно установлен pg-0.17.0

Жан
источник

Ответы:

252

Если вы хотите избежать использования MacPorts, вы можете загрузить приложение Postgres и поместить его в каталог приложений.

Затем укажите расположение недавно загруженных pg_config:

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

Если вы столкнулись с проблемой отсутствия заголовков, попробуйте указать includeкаталог приложения:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
Юрий
источник
11
Обратите внимание, что вы все еще можете использовать упаковщик, установив переменную env конфигурации:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42
8
Если вы используете Postgres 9.3 (последняя gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
версия
Использование Postgres93.app сработало, но для установки пакета пришлось добавить путь bin к переменной env PATH.
мхатиб
5
Пришлось заставить это работать, используя gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez
1
Спасибо! Я получал предупреждение: не удалось связать postgresql. Отключение ... Ошибка: не удалось создать символьную ссылку: ... недоступен для записи. Вам следует изменить его разрешения. И все является ошибкой пивоварения, после того, как я заварю install / link postgresql Установка идет по адресу: Linking /usr/local/Cellar/postgresql/9.3.4 ... который в моем случае является ОЧЕНЬ КОНФЛИКТНОЙ ПАПКОЙ, загружая pg и gem install с помощью это решает проблему СПАСИБО !!!!!!
d1jhoni1b
74

Используйте варево, чтобы получить postgresql

brew install postgresql

Убедитесь, что у вас есть pg_config в установленном пиве. Я нашел свой в

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Проверить через:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

После этого установите pgдрагоценный камень с помощью

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
Аюш Гоэль
источник
2
работал у меня после многих попыток. Мне просто нужно было убедиться, что используется правильный номер версии (9.3.5_1 в моем случае)!
HK,
1
Используйте, ls /usr/local/Cellar/postgresql/9.*/bin/pg_configчтобы найти реальный путь и объединитьenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Джеспер Гранн Лаурсен
Чуть более подробное описание происходящего здесь deveiate.org/code/pg/README-OS_X_rdoc.html
Юлия Усанова
35

Мне не удалось установить postgres через MacPorts. Вместо этого я установил Postgress.app . и позвонил

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

Примечание: в более новых версиях (по крайней мере, в 9.3) путь на самом деле: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

iceui2
источник
2
Это работает, но обратите внимание, что иногда Postgres.app устанавливается как Postgres <NN> .app, где NN - номер версии.
nimrodm
11

Если у вас домашнее пиво, просто введите:

$ brew установить postgresql

user2373148
источник
1
Это сработало для меня - у меня уже был установлен PostgreSQL, но я думаю, мне пришлось установить его снова, чтобы обновить заголовки (?) Тогда я мог бы сделатьgem install pg
Crimbo
10

Вот еще одна альтернатива, если вы хотите напрямую использовать установщик postgresql. Есть пара обручей, через которую вы должны перепрыгнуть после обновления до Mavericks. Вот что я сделал:

Сначала установите инструменты командной строки xcode:

xcode-select --install

Загрузите и установите последнюю версию PostgreSQL (9.3.1), в моем случае я просто использовал графический установщик. Вот ссылка на страницу загрузок:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Просто выберите все значения по умолчанию. В моем случае он установил postgres в следующий каталог, если вы установили его в другой каталог, просто запомните выбранный путь, потому что он вам понадобится в ближайшее время.

/Library/PostgreSQL/9.3

Если вы сейчас попытаетесь установить последнюю версию pg gem (0.17.0), вам нужно будет передать несколько параметров в командной строке. Вот что я использовал:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Если вы установили postgres в другое место, вам необходимо исправить путь к файлу pg_config.

Если он жалуется на отсутствие файла libpq.5.dylib при попытке установить pg gem, вам необходимо создать символическую ссылку, указывающую на фактическое местоположение этого файла. Postgres ищет его в вашем каталоге / usr / local / lib /, поэтому создайте там символическую ссылку и перенаправьте ее в ее фактическое местоположение. В моем случае пришлось запустить:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Как только вы это сделаете, попробуйте снова установить драгоценный камень, и, надеюсь, он будет работать для вас так же, как и для меня.

2potatcakes
источник
9

Для меня в Йосемити мне не нужно было указывать pg_configпуть. Следующее было сделано.

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

Кажется, ключ архитектуры - это флаг.

диниго
источник
5

В моем случае (мне нужен PG 0.16.0 на Mavericks) я установил postgresql через MacPorts

sudo port install postgresql90

а потом

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Для последней версии вам нужно вычесть -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Если у вас установлен Homebrew, не устанавливайте MacPorts, пока не прочтете об их сосуществовании.

Gi0
источник
5

Поместите недостающее --with-pg-configв файл конфигурации Bundler: /Users/<your_user>/.bundle/configчтобы облегчить себе жизнь.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Потом bundle installснова беги .

Бруно Букколо
источник
5

Это подходит для меня! (Postgres 93, mac ox 10.9.1) 1. скачать @ http://postgresapp.com/, а затем

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
meck373
источник
4

Я застрял в установке пакета на 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

Нирадж Гупта
источник
4

В моем случае это не сработало, если вы не указали флаги арки, OS X 10.10.3 и postersApp 9.4

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Рашиди Мохамед
источник
3

Самый простой способ решить эту проблему - использовать Postgres.app и настроить мои env vars так, чтобы они работали gem install pg(вместо того, чтобы требовать --with-pg-configфлаг).

Используя Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg
смол
источник
2

Вот что у меня сработало:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
Тохи
источник
2

В моем случае я удалил версию, установленную через homebrew, и переключился на Postgres.app (v9.3.4.2 на момент написания).

Это работало только при добавлении флагов архитектуры среды и указании пути к pg_config. Ваш пробег может отличаться, поэтому этот ответ может помочь с вариациями pg_configместоположения.

Вот последняя полная команда, которая сработала у меня:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
Мариус Бутук
источник
2

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config

Тайский
источник
это также сработало для меня с установкой пакета следующим образом:ARCHFLAGS="-arch x86_64" bundle install
d4n3
1

Я получал ту же ошибку при запуске установки пакета в отношении pg gem (с использованием Mac OS X Mavericks). После нескольких часов исследований я нашел решение. Я установил postgres с помощью homebrew

brew install postgres

После установки я создал новое приложение rails с помощью postgres. Я побежал

bundle install

безрезультатно (получил ту же ошибку, что и вопрос). я использовал

which psql

чтобы выяснить, где был установлен мой postgres, он вернул

/usr/local/bin/psql

перед повторным запуском установки пакета мне пришлось изменить глобальный путь к build.pg, выполнив следующие

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

затем я снова запустил установку пакета и вуаля! Я использовал postgres, где его установил brew.

Рав Джохал
источник
1

В OS X Mavericks с последним приложением Postgres выполните следующие действия с привилегиями sudo

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Вайлансио Родригес
источник
1

Что сработало для меня на 10.9.3 с Xcode 5.1.1, было следующее:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Мне понадобился пг 0.17.1

Том Андерсен
источник
1

Для любой потерянной души, которая все еще имеет эту проблему без разрешения и имеет brewустановленный ruby и postgres . Вот следующие шаги, чтобы убедиться:

  • Убедитесь, что ваша версия rubyне была установлена ​​с --universalфлагом.
    • Это было сложнее всего понять, и --universalэто было окончательным корнем проблемы.
  • Убедитесь , что вы настроите postgresqlправильно с initdbи createdbкоманды (искать в другом месте для шагов , чтобы сделать это).
  • Убедитесь, что Xcode(Необязательно) и command line toolsустановлен; на терминале:
    • xcode-select --install
    • sudo xcodebuild -license (если установлен Xcode) или откройте приложение и примите лицензионное соглашение.
    • Перезагрузите компьютер
  • which ruby, which gemи which postgresнадо показать /usr/local/bin/ruby, /usr/local/bin/gemи /usr/local/bin/postgresуважительно.
  • На терминале запустите:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • или
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Убедившись, что все эти шаги выполнены, я смог решить следующие ошибки:

    • ruby.h ошибка заголовка
    • developer tools installed first ошибка
link_boy
источник
1

Прежде всего найдите расположение pg_config

sudo find / -name "pg_config" -print

Ответ /Library/PostgreSQL/9.1/bin/pg_config в моей конфигурации (MAC Maverick)

Затем попробуйте установить что-то вроде ниже

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

если это не сработает, попробуйте проверить, каким образом вы установили postgresql

brew / порт Mac / настройка

тогда вы должны попробовать соответствующий вариант.

Спасибо.

ОЗУ

Рамешвар Вьевхаре
источник
0

У меня была та же проблема, это было решение, которое я нашел.

Если вы запустите brew doctor, он сообщит вам, что, вероятно, вы установили что-то без пива, которое изменило разрешения для некоторых папок, и поэтому вам нужно изменить разрешения для этой папки.

Внутри /usr/local/share/manвы можете сделать следующее:

sudo chown [yourusername] man7

А потом:

brew link postgres

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

Густаво Семиау-Лобо
источник
0

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

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

Исправление заключалось в том, чтобы просто «варить удаление postgresql», а затем «варить установку postgresql». После чего я сразу смог успешно запустить «обновление пакета».

Шеннон Перкинс
источник
0
sudo su 

затем

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

работал 10.10.2

Китон Берлесон
источник
0

Если, попробовав все здесь, он все равно не установится, попробуйте открыть Xcode и принять лицензионное соглашение.

Hattenn
источник
0

Для меня сообщение об ошибке выглядело так:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Как видно из сообщения об ошибке, он пытается выполнить команду / скрипт «pg_config». Так что просто добавьте его в путь из того места, где находится ваша установка Postgres. В моем случае я сделал:

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

затем

bundle

Вот и все.

paneer_tikka
источник
-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
MDD
источник
Было бы неплохо дать небольшое объяснение, чтобы это не потерялось в потоке 19 других ответов.
Брэд Кох