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?
shingara

1
таким образом
user984621

установщик on_click? Flink? или 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программы.
tadman

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 = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Род Пэддок

13
В OSX вы также можете использовать brew для передачи заголовков, brew install libpqxxи все будет хорошо.
Vetsin

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
спасибо, как и в моем случае - не нужно запускать bundle gem install pg
valk

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

1
Работал у меня с ноября 2013 года под управлением Ubuntu 13.04!
Starkers 05

почему у него так много голосов, когда явно не за ту ОС?
sevenseacat 02

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 08

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

Чтобы установить pg gem, убедитесь, что вы правильно настроили свой $ 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 / Contents / Versions / 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

Теперь вернитесь в свою папку, которую вы пытаетесь связать с установкой.

  1. заставить ваш pg работать с вашим файлом postgesql или только что загруженным gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

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



0

Что сработало для меня в El Capitan, так это обновление ruby ​​с системного значения по умолчанию до 2.3.1, казалось, нашло правильные библиотеки, которые pgнужны гему.

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