Неможливо встановити pg gem у Mavericks за допомогою Postgres.app


74

Я намагаюся встановити pg gem для використання з Postgres.app на моєму локальному комп'ютері. Я керую Mavericks.

Postgres.app встановлений і працює нормально, але я не можу змусити камінь працювати. Я зробив наступне:

  1. Використана команда 'env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config' з документації Postgres.app
  2. Оновлено Homebrew та встановлено Apple GCC 4.2
  3. Встановив інструменти розробника Xcode
  4. Оновив мій $ PATH для посилання на каталоги коду Postgres.app та lib

Все без успіху. Ось конкретне повідомлення про помилку, яке я отримую:

Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

    /Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
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.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
    --with-pg
    --without-pg
    --with-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}/

Буду вдячний будь-якій допомозі, яку ви можете запропонувати. Дякую!


Відповіді:


261

Можливо, у вас неправильний шлях --with-pg-config, перевірте, чи він насправді там.

Ви можете знайти правильний шлях до за pg_configдопомогою:

find /Applications -name pg_config

В останній версії Postgres.app шлях такий:

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

Досить соромно, ось і все. Після оновлення до останньої версії Postgres.app шлях змінився, і я не помітив. Дякую!
blundin

Це було для мене теж!
JD Maresco

23
Дякую за це! Чомусь на моїй інсталяції мені довелося запустити$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config .
Габріель Осоріо

3
Можливо, для встановлення нових Postgres.app вам потрібно буде скористатися цією командоюgem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config .
Шон

1
Для подальшої довідки я щойно завантажив Postgres.app вчора, і мій pg_config знаходиться за адресою Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config. Потрібно зрозуміти, де знаходиться їх pg_config, використовуючи lsдля перегляду Applications/Postgres.app/Contentsкаталогу. Дивіться , якщо у вас є /Contents/MacOSабо /Contents/Versions...
peterhurford

16

У моєму випадку (запуск Postgres.app v9.3.4.2) це, здавалося, працювало лише при попередньому додаванні прапорів архітектури середовища:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 

Ви можете помістити ARCHFLAGS у свій .bash_profile (або еквівалент), включивши export ARCHFLAGS="-arch x86_64". Для мене без цього PG не працює.
Пітерхурфорд

Я використовую пакет, і мені знадобилося трохи, щоб зрозуміти, як додати це до bundleкоманди. Ви можете використовувати bundle config pg.build "....", див. Більше на bundler.io/v1.3/man/bundle-config.1.html
Чад Горшинг

13

Будучи на абсолютно новому Mac, ось що мені потрібно було зробити:

  1. Встановіть інструменти Xcode із магазину програм
  2. Відкрийте інструменти Xcode та прийміть ліцензію
  3. Тепер запустіть (сподіваємось, майбутню команду):

    version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .

Якщо у вас виникли проблеми, ви можете трохи усунути неполадки, перевіривши фактичну помилку в mkmf.log, яку ви можете знайти, запустивши (якщо використовується rvm):

cd ~/.rvm ; find . -name mkmf.log | grep pg

Це правильний шлях для останньої версії програми Postgres.
Майкл Шиммінс

- - важливо, це має бути помилка в pg.
БАР

6

Я зміг встановити pg за допомогою цієї команди

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

Я знайшов свій шлях бігом

    sudo find / -name "pg_config"

і я успішно встановив pg-0.17.1


Знайти pg_configфайл за допомогою цієї команди простіше , тому вам не доведеться шукати всі файли на вашому комп’ютері: $ find /Applications/Postgres.app/ -name "pg_config" пошук /Library/буде працювати на вашій машині.
Поуерс

3

додавання до шляху послідовності контейнерів до шляху також робить трюк. просто додайте смітник до погладжування таким чином. з нещодавніми встановленнями останнє символічне посилання гарантує, що цей шлях повинен бути "стабільним" для майбутніх оновлень версії.

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

Дякую, попередньо це gem installпрацювало нормально:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin gem install pg
Крістоф Гешвінд

2

Щоб вирішити цю проблему, я встановив postgres за допомогою homebrew, використовуючи наступне у вікні терміналу:

brew install postgres

Homebrew можна знайти тут

http://brew.sh


4
Це вирішує проблему, але це означає встановлення цілого іншого postgres лише для цього одного заголовкового файлу.
надсвітлий

5
Так, не робіть цього, якщо ви використовуєте Postgres.app. Насправді вам слід бігти, brew uninstall postgresякщо він там є.
Пітерхурфорд,


1

Для подальшого використання, оскільки багато хто з нас публікує нові шляхи для нових номерів версій:

В даний час я бачу символічне посилання latestв /Applications/Postgres.app/Contents/Versions/.

Ви повинні мати можливість просто зробити:

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

І забудьте про номер версії. Це може стосуватися не кожної (старішої) версії, але я сам шукав фрагмент, який міг би зберегти та використати повторно.

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