Rails 3 - не вдається встановити pg gem


98

Коли я намагаюся запустити пакет (встановити пакет), я весь час отримую

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
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
    --without-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/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Я використовую Mac OS X 10.6, версія встановленого PostgreSQL - 9.1. Я виявив, що проблема в libpq-dev , як я можу це встановити / виправити?


2
як ви встановили postgres на своєму mac?
шингара

1
таким чином
user984621

інсталятор on_click? Флінк? чи MacPort?
shingara

Я намагався встановити це таким чином:, sudo port install libpq-devале ще одна проблема - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Це жахливо, все ж деякі проблеми ...
user984621

1
Дивіться це питання: [тут] [1] [1]: stackoverflow.com/questions/10321189 / ...
banditKing

Відповіді:


78

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

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Якщо ви не впевнені, де знаходиться ваш pg_config, і припускаючи, що ви перебуваєте на Linux або Mac, можете запустити таку команду:

which pg_config

Ваш pg-config може знаходитись у різних місцях залежно від способу встановлення postgres.


Як зауваження, двійковий пакет із сайту Postgres не містить заголовків розробки та pg_configпрограми.
тадман

3
Бінарний пакет звідси: enterprisedb.com/products-services-training/pgdownload#osx , безумовно , робить містити як pg_config(наприклад, в /Library/PostgreSQL/9.1/bin/pg_configпротягом 9.1.x) і заголовки розвитку. Це те, що я використовую для тестування pgдорогоцінного каміння в розвитку.
Майкл Грейнджер

8
Не which pg_configбуло б швидше, ніж find / -name pg_config?
Джастін Д.

Зробив незначне налаштування аргументів вашого командного рядка. Заміна версії на поточну повинна працювати нормально. Ось мій командний рядок: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Бібліотека / PostgreSQL / 9.1 / include / --with-pg-lib = / Бібліотека / PostgreSQL / 9.1 / lib /
Rod Paddock

13
На OSX ви також можете використовувати brew, щоб отримати заголовки, brew install libpqxxі все піде нормально.
Вецин

99

якщо ви працюєте на Linux, можливо, вам буде цікаво, що для мене працювало:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

Тоді

gem install pg

тоді

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
дякую, як це в моєму випадку - не потрібно запускати пакет gem install pg
valk

21
Не підходить для OS X.
dfrankow

1
Працював для мене з листопада 2013 року під управлінням Ubuntu 13.04!
Старкерс

чому це має стільки обновлених результатів, коли це явно для неправильної ОС?
sevenseacat

1
@sevenseacat в ньому чітко зазначено ОС, на якій вона повинна бути використана. І очевидно, що багато людей з ОС Linux знаходять цю відповідь, коли досліджують цю проблему.
EE33

57

Якщо ви використовуєте Postgress.app, тоді ви хочете отримати доступ до його інструментів командного рядка . Введіть наступний рядок у своєму терміналі чи у своєму PATH-профілі :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgтепер має працювати. (Це те, що працювало для мене.)

Примітка Шлях нових версій виглядає так:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
Дуже дякую! Я провів півгодини, переглядаючи речі, які не спрацювали, і нарешті знайшов це закопаним тут. : D
Пітер Браун

1
Прекрасне рішення, яке не вимагає заварювання.
lucian303

7
Тільки майте на увазі, що патч Postgre.app змінився у версії 93. це зараз: /Applications/Postgres93.app/Contents/MacOS/bin
Ален

2
Це працювало для мене, хоча мій контейнер знаходився в зовсім іншому місці -> /Library/PostgreSQL/9.3/bin
Ієремія,

5
Це зараз - /Applications/Postgres.app/Contents/Versions/9.3/binстаном на 9.3.5, якщо ви використовуєте Postgres.app
Ешлі


12

Шукати libpq:

brew search libpq

Потрібно вивести libpqxx

Потім спробуйте встановити його:

brew install libpqxx

8

Вам потрібно лише встановити libpq-dev:

sudo apt-get install libpq-dev

Тоді самоцвіт повинен встановити просто чудово.


8
Не підходить для OS X.
dfrankow

У моєму випадку тільки це допомогло. Дякую!
kovpack

7

Дотримуйтесь інструкцій після встановлення: http://postgresapp.com/documentation/configuration-ruby.html

Щоб встановити дорогоцінний камінь, переконайтесь, що ви правильно встановили $ PATH (як зазначено в http://postgresapp.com/documentation/cli-tools.html ), а потім запустіть

sudo ARCHFLAGS="-arch x86_64" gem install pg

Я настійно рекомендую прочитати обидві сторінки. Тільки скував їх і втратив 1 годину свого життя. Прочитайте їх, проблему вирішено.


Працює на OSX 10.9.5, за замовчуванням ruby ​​версія 2.0, rbenv локальна версія 1.9.3.
jlucasps

Працює на OSX 10.11 ДЯКУЄТЬСЯ
Ярін

Працює на OSX 10.11.4. Дякую!!
Мартін Чемберлін

3

Проблема в мене полягала в тому, що вона чомусь намагалася компілювати з /usr/bin/gcc-4.2. Я з’ясував це, змінивши try_cpp в mkmf.rb (який я бачив у сліді стека), щоб створити виняток із збіжної лінії компіляції.

Я зв'язав програмне забезпечення gcc до gcc-4.2, і він працював:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Чому намагалися використовувати gcc-4.2? Не маю уявлення.

Фактичний рядок компіляції:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

У мене вийшов той самий випуск, але мій Postgres був встановлений

/Library/PostgreSQL/9.3

Оновіть ~ / .bash_profile, додавши:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Відкрийте новий термінал, запустіть bundle updateі також він працював для мене. Дякую Арі.


але для мене потрібно перевірити версію, а потім експортувати PATH = / Applications / Postgres.app / Зміст / Версії / 9.4 / bin: $ PATH
Prateep Kul

1

Ви можете встановити параметр конфігурації збірки bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configта використовувати gem install pgбез будь-яких варіантів (шлях до pg_config може відрізнятися для вас, цей - для Postgresapp 9.3.5.0)


1

У мене була така ж проблема в моїй машині openSUSE13.1 KDE. До цього питання, з яким я стикався, я встановив лише пакети postgresqlта postgresql-serverвикористовував zypperкоманду. Потім знову встановлено ще 2 пакети:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Потім я знову побіг bundle install, і успіх !!!



0

По-перше, видаліть будь-які версії Homebrew. Опція --force дозволяє видалити всі версії.

brew rm postgresql --force

Змініть шляхи відповідно до своєї версії.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Відредагуйте / etc / profile та видаліть будь-які рядки, на які посилається "postgres".

nano /etc/profile

Встановіть PostgresSQL

brew update
brew install postgresql

Встановити PG GEM

gem install pg

Це воно. З повагою


0

Спочатку ви можете перевірити, чи є у вас термінал postrgresql у своєму терміналі, перейшовши до файлу lib. збирається cd ~ / opt / local / lib /, а потім наберіть ls та кнопку введення. Це покаже вам список усіх файлів, які знаходяться в каталозі lib.

1. Якщо у вас немає postreseql, ви можете завантажити через macports. порту sudo встановити postgresql93 @ 9.3.2_1

Тепер CD в свою папку, яку ви намагаєтеся встановити

  1. змусити ваш pg працювати з вашим файлом postgesql, який ви щойно завантажили, або встановив gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

тепер запустіть встановити пакет



0

Те, що працювало для мене на El Capitan, було оновлення рубіну з системного замовчування до 2.3.1, здавалося, знаходити потрібні бібліотеки, які pgпотрібні дорогоцінній камені.

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