Pg gem '0.14.0' на Mountain Lion не удается

Я только что обновился от OS X Lion до OS X Mountain Lion. Моя рельсовая среда по большей части оставалась в такте.

Единственные шаги, которые я должен был сделать, чтобы вернуться к хорошему состоянию, были: - Установите XCode 4.4 - Установите инструменты командной строки XCode 4.4 - Установите gcc-4.2

Итак, все прошло хорошо.

Здесь проблема, почти все мои драгоценные камни устанавливаются правильно, когда я запускаю установку пакета, за исключением одного из самых важных, которые мне нужны, - postgresql gem 'pg'.

И он специально терпит неудачу для версий выше 0.12.2.

Я использую ruby ​​1.9.3p125.

Я могу успешно захватить драгоценный камень 0.12.2 pg и версии ниже, но они дают мне ошибки сегментации (я предполагаю, из-за версии Ruby, которую я использую).

Итак, это заставляет меня думать, что это специфично для жемчужины pg, а не для моей общей среды, поскольку другие драгоценные камни прекрасно устанавливаются.

Я также попытался переустановить Postgresql, чтобы убедиться, что среда postgres в порядке и кажется хорошей на этом фронте.

Кто-нибудь смог установить версию pg '0.13.0 или выше (и более предпочтительно 0.14.X)?

Вот моя трассировка стека:

Building native extensions.  This could take a while...
ERROR:  Error installing pg:
ERROR: Failed to build gem native extension.

    /Users/caseyli/.rvm/rubies/ruby-1.9.3-p125/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... yes
checking for PQconnectionUsedPassword()... yes
checking for PQisthreadsafe()... yes
checking for PQprepare()... yes
checking for PQexecParams()... yes
checking for PQescapeString()... yes
checking for PQescapeStringConn()... yes
checking for PQescapeLiteral()... yes
checking for PQescapeIdentifier()... yes
checking for PQgetCancel()... yes
checking for lo_create()... yes
checking for pg_encoding_to_char()... yes
checking for pg_char_to_encoding()... yes
checking for PQsetClientEncoding()... yes
checking for PQlibVersion()... yes
checking for PQping()... yes
checking for rb_encdb_alias()... yes
checking for rb_enc_alias()... no
checking for PGRES_COPY_BOTH in libpq-fe.h... no
checking for struct pgNotify.extra in libpq-fe.h... yes
checking for unistd.h... yes
checking for ruby/st.h... yes
creating extconf.h
creating Makefile

make
compiling pg.c
pg.c: In function ‘pg_s_library_version’:
pg.c:273: warning: implicit declaration of function ‘PQlibVersion’
pg.c: In function ‘Init_pg_ext’:
pg.c:384: error: ‘PQPING_OK’ undeclared (first use in this function)
pg.c:384: error: (Each undeclared identifier is reported only once
pg.c:384: error: for each function it appears in.)
pg.c:386: error: ‘PQPING_REJECT’ undeclared (first use in this function)
pg.c:388: error: ‘PQPING_NO_RESPONSE’ undeclared (first use in this function)
pg.c:390: error: ‘PQPING_NO_ATTEMPT’ undeclared (first use in this function)
make: *** [pg.o] Error 1


Gem files will remain installed in /Users/caseyli/.rvm/gems/ruby-1.9.3-        [email protected]/gems/pg-0.14.0 for inspection.

Ответы

Ответ 1

Комментарий от Deefour получил! Именно так я установил PostgreSQL.

Я использую установщик PostgreSQL с одним щелчком мыши, который, как я предполагаю, не настроил libpq правильно для Mountain Lion.

Homebrew с другой стороны построит его правильно для ОС.

После установки postgres через homebrew

brew install postgresql

Мне не удалось установить мой драгоценный камень.

Спасибо всем!

Ответ 2

Проблема заключается в расположении pg_config. Если вы используете установщик с одним щелчком мыши, он находится в /Library/PostgreSQL/ 9.2/bin/pg_config, так что это приведет к созданию вашего драгоценного камня просто:

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

Ответ 3

У меня была такая же проблема; те же трассировки стека, что и вы.

MRI 1.9.3-p286/OS X 10.8.2/Postgres 9.0.4 с доморощенным.

Я решил это просто:

$ brew update
$ brew upgrade postgresql
$ bundle

Надеюсь, что это сработает для кого-то другого.

Ответ 4

Переустановка ruby ​​исправила аналогичную проблему, которую я получил после обновления до Mountain Lion

rvm reinstall 1.9.3

Примечание. Также выполните следующие действия, так как кажется, что версия по умолчанию сбрасывает

rvm --default 1.9.3

Для справки я опубликовал ошибку, которую я видел ниже

gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with pg=/usr/local/Cellar/postgresql/9.1.4/bin
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

Ответ 5

Mac поставляется с устаревшей предварительно установленной клиентской установкой PostgreSQL и файлом pg_config, который с ней конфликтует с любыми новыми установками PostgreSQL и клиентами.

Установка рубинового драгоценного камня с полным именем файла pg_config переопределяет известное по умолчанию местоположение pg_config и установка успешно завершена.

Текущее местоположение pg_config установщиком одним щелчком по EnterpriseDB:/Library/PostgreSQL/bin/pg_config

Эта команда, наконец, работала для меня.

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

Ответ 6

У меня была такая же проблема, но переустановка postgresql с homebrew не решила его. Однако эта команда сделала это для меня:

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

Ответ 7

Мне удалось заставить его работать, установив Postgres.app из Heroku и удалив мою существующую установку postgresql. Вы можете скачать приложение здесь:

http://postgresapp.com/

brew remove postgresql

bundle install

Если вы не использовали brew, здесь ссылка на большее удаление документов из Postgres.app

http://postgresapp.com/documentation#toc_16

Ответ 8

Я только что получил и выполнил этот билет:

Как передать параметр для установки gem при запуске установки пакета?

bundle config build.pg --with-pg-config=/path/to/pg_config
bundle install

Как и Мэтт, Ранджан и Питер Меллетт, все говорят, что вы должны получить правильное местоположение pg_config, а Mountain Lion - в другом месте, которое, похоже, не хорошо работает с rubygems, поэтому, если вы найдете свою старую версию, например

/Library/PostgreSQL/bin/pg_config

то вы можете установить это в конфигурации пакета перед установкой.

Моя ситуация улучшалась от Льва до Горного Льва.

Ответ 9

Homebrew установлен pg_ctl в /usr/local/bin/pg_ctl, поэтому команда для меня была:

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_ctl

Ответ 10

Извлеките те, кто использует Kubuntu 13.04, и установили pg одним нажатием, pg config находится в другой папке, поэтому команда:

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