Невозможно установить 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


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

11

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

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


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

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


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, пока не прочтете об их сосуществовании.


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

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 ошибка

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

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


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

Вот и все.


-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config

Было бы неплохо дать небольшое объяснение, чтобы это не потерялось в потоке 19 других ответов.
— Брэд Кох
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.