Встановлення PG gem на OS X - невдача побудови власного розширення


183

Здається, у багатьох інших виникли проблеми з встановленням дорогоцінного каміння. Жодне рішення, поставлене для інших, не працювало на мене.

Я спробував встановити pg gem та postgres.app. Доступний вміст pg не встановиться. Перша помилка:

Під час встановлення pg (0.17.0) сталася помилка, і Bundler не може продовжувати. Переконайтеся, що це gem install pg -v '0.17.0'вдалося перед тим, як зв’язати.

Порада щодо установки щодо вказівки мого каменю встановити на config для 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 годин, пробуючи кожну пораду, щоб підключитись до роботи з моїм рельсовим проектом.

Я не можу знайти поради щодо того, як змінити шлях, або конкретно, що потрібно змінити. Мій which pg_configповертає джерело файлу. Я використовував це з командою для встановлення pg за допомогою цієї конфігурації. Це виходить з ладу.

Є так багато людей, які мали проблеми з цим. Багато відповідей свідчать про домашню мову. Мені довелося це усунути, оскільки це підштовхувало інші проблеми.


1
Гей, кілька запитань, які допоможуть у дорозі: - Ти на Mac, правда? Правильно пішов не так з домашнім? (ps, як ви зазначали, apt-get призначений саме для Ubuntu (та його двоюрідних братів на базі Debian)) - яка версія постгресу у вас є? спробуйте запустити psql -vв оболонці. - яку рубінову версію ти працюєш? Це схоже на 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, а рубін - v 1.9.3
Мел

1
Дивіться відповідь @ paninapress для Postgres.app. Для мене це чудово спрацювало і не вимагає встановлення іншого екземпляра Postgres.
Джеймон Холмгрен

Відповіді:


442

Для мене однакова помилка, і я не відчував її, поки не завантажив OS X 10.9 (Mavericks). Зітхніть, ще один головний біль при оновленні ОС.

Ось як я це виправив (з домашньою мовою):

  • Встановіть іншу збірку інструментів Xcode (введення brew updateв термінал запропонує оновити інструменти збирання Xcode)
  • brew update
  • brew install postgresql

Після цього gem install pgпрацював на мене.


7
Після двох днів головного болю, намагаючись виправити мій Rails db після оновлення Mavericks, це виправило мене, велике спасибі
Дебора

4
Це працювало і для мене - у свіжому встановленні Mavericks. Дякую!
мільйонів

1
Дякую, що зберегли мою розум!
Джим

1
Досі працює. Проект працює на Ruby 2.2.0, щоб підтримувати старий додаток, але все-таки ДЯКУЙТЕ.
TristanZimmerman

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.
rafaelkin

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, встановлене gem, за допомогою цього рішення.
BMW

1
+1, також, це було рішенням і для мене, коли мій postgresql вже встановлений за допомогою варіння. Дякую Джону за посаду.
Джейсон Хоекстра

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, а рубін - 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


6
Цей спосіб є кращим, якщо ви використовуєте postgres.app. Використання Homebrew може виправити нативную проблему розширення, але мають два Postgres додатки буде створювати конфлікти (наприклад , розподіл портів) Дивіться також відповідь Sayanees 'на stackoverflow.com/questions/19569031 / ...
Epigene

4
Це, безумовно, правильна відповідь для Postgres.app.
Джеймон Холмгрен

Добре працює на Mojave, пробував успішно кілька хвилин тому.
microspino

23

Я пробував все години, але остаточно це виправив (я перебуваю на OS X 10.9.4):

  1. Встановити інструменти командного рядка Xcode (веб-сайт розробника Apple)
  2. заваріть видалення postgresql
  3. варити встановити postgresql
  4. ARCHFLAGS = "- арка x86_64" gem встановити pg

Спасибі. Я використовував судо для кроку 4, це погано? Як я можу цього уникнути?
Рой

@Roy - радий допомогти :) - повинно бути добре, напевно, хочу уникати використання sudo, оскільки я вважаю, що він встановить його для всіх користувачів, але якщо ви єдиний користувач у системі, ніж його, мабуть, не така вже й велика угода .
Алі Яздані

brew uninstall postgresqlі brew install postgresqlне є необхідними кроками в ОС X 10.10 та 10.11. Просто gem uninstall pg(та видаліть усі версії), тоді переконайтесь, що ви знову bundleчи gem install pgзнову, і натовні розширення будуть перебудовані за допомогою нових інструментів командного рядка для цієї версії OS X.
Олів'є Лакан


6

Аналогічно, після встановлення Mavericks bundle updateставив помилку на дорогоцінний камінь pg, який використовується лише у виробництві, а не локально.

Я використовую Brew для управління своїми пакунками, і postgresql вже встановлений, але все ж я отримував помилку "без 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.


Чи можете ви пояснити, чому нам довелося використовувати дефіс 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 установка.



0

Вирішено! Я виявив деяку відсутність бібліотеки для PostgreSQL в системі. Лише два кроки вирішили це:

brew install postgresql

Потім бігайте

gem install pg


0

Для тих, хто не зацікавлений користуватися brew.

  1. Завантажити PostgreSQLдодаток.
  2. Дотримуйтесь інструкцій macOS за замовчуванням, щоб встановити її.
  3. Бажано бігати PostgreSQl.
  4. Запустіть gem install pg -- --with-pg-config=/ шлях / до / після прогресу / в / ваші / програми / папки / `
    • Наприклад, в моїй машині це є /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.