Rails 3 - не могу установить pg gem

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

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, как я могу это установить/исправить?


person user984621    schedule 12.03.2012    source источник
comment
как вы установили postgres на свой mac?   -  person shingara    schedule 12.03.2012
comment
этим способом   -  person user984621    schedule 12.03.2012
comment
установщик on_click ? Флинк? или МакПорт?   -  person shingara    schedule 12.03.2012
comment
Пробовал установить вот так: sudo port install libpq-dev, но другая проблема - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Ужасно, еще какие-то проблемы...   -  person user984621    schedule 12.03.2012
comment
См. этот вопрос: [здесь] [1] [1]: stackoverflow.com/questions/10321189/   -  person banditKing    schedule 25.04.2012


Ответы (16)


Как указано в вашем журнале ошибок, вам нужно указать путь к файлу pg_config. Попробуйте установить драгоценный камень, используя:

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

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

which pg_config

Ваш pg-config может находиться в разных местах в зависимости от того, как вы установили postgres.

person Ethan    schedule 12.03.2012
comment
Обратите внимание, что бинарный пакет с сайта Postgres не содержит заголовков разработки или программы pg_config. - person tadman; 12.03.2012
comment
Бинарный пакет отсюда: enterprisedb.com/products-services-training/pgdownload# osx наверняка содержит как pg_config (например, /Library/PostgreSQL/9.1/bin/pg_config для 9.1.x), так и заголовки разработки. Это то, что я использую для тестирования драгоценного камня pg в разработке. - person Michael Granger; 13.03.2012
comment
Разве which pg_config не будет быстрее, чем find / -name pg_config? - person Justin D.; 04.11.2012
comment
Внесены небольшие изменения в аргументы командной строки. Замена версии на вашу текущую должна работать нормально. Вот моя командная строка: 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 / - person Rod Paddock; 30.11.2013
comment
В OSX вы также можете использовать brew для получения заголовков через brew install libpqxx, и все будет хорошо. - person Vetsin; 13.12.2013
comment
По какой-то причине which не нашел расположение файла pg_config. для меня это было расположено в /Library/PostgreSQL/9.1/bin/pg_config. на всякий случай это может помочь кому-то еще - person Mike McCoy; 30.12.2013
comment
Мой был gem install pg -- --with-pg-config=/Library/PostgreSQL/9.2/bin/pg_config - person Mike Atlas; 03.01.2014
comment
Если вы используете приложение POSTGRES от Heroku, pg_config находится в /Applications/Postgres.app/Contents/MacOS/bin/pg_config. - person jmstone617; 24.01.2014
comment
Вы можете изменить это на: gem install pg -- --with-pg-config=`which pg_config` - person vpontis; 28.04.2015

если вы работаете в Linux, вам может быть интересно, что сработало для меня:

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

потом

gem install pg

тогда

bundle install

источник: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac

person E.E.33    schedule 29.05.2012
comment
спасибо, как в моем случае - не нужно запускать bundle gem install pg - person valk; 10.06.2012
comment
У меня работало с ноября 2013 года под управлением Ubuntu 13.04! - person Starkers; 05.11.2013
comment
почему у этого так много голосов, когда он явно не для той ОС? - person sevenseacat; 02.12.2013
comment
@sevenseacat четко указывает ОС, на которой его следует использовать. И очевидно, что многие люди с операционными системами Linux находят этот ответ, когда исследуют эту проблему. - person E.E.33; 02.12.2013
comment
Это должно работать, если вы используете репозитории. Очевидно, что это не сработает, если вы скомпилируете из исходников. Но это прекрасно работало в Ubuntu 14.04 при использовании репозиториев. - person Donato; 23.05.2015
comment
Это заставило его работать. Ключевым моментом является то, что postgresql должен быть установлен на вашем компьютере. - person JackHasaKeyboard; 13.11.2015

Если вы используете Postgress.app, вам понадобится доступ к его инструменты командной строки. Введите следующую строку в свой терминал или ссылку профиль PATH:

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

gem install pg теперь должно работать. (Это то, что сработало для меня.)

Примечание Путь к новым версиям выглядит так:

/Applications/Postgres.app/Contents/Versions/<version>/bin
person Ari    schedule 27.10.2013
comment
Большое спасибо! Я провел полчаса, разбираясь с вещами, которые не работали, и, наконец, нашел это зарытое здесь. :D - person Peter Brown; 02.11.2013
comment
Отличное решение, не требующее заваривания. - person lucian303; 08.11.2013
comment
Просто имейте в виду, что патч Postgre.app изменился в версии 93. сейчас: /Applications/Postgres93.app/Contents/MacOS/bin - person Alain; 06.01.2014
comment
Это сработало для меня, хотя моя корзина была совсем в другом месте -> /Library/PostgreSQL/9.3/bin - person Jeremiah; 31.01.2014
comment
Postgres.app объясняет обновленный путь для использования на этой странице документации: postgresapp.com/documentation/cli- инструменты.html - person Jeff French; 28.07.2014
comment
Это сейчас - /Applications/Postgres.app/Contents/Versions/9.3/bin по состоянию на 9.3.5, если вы используете Postgres.app - person Ashley; 20.09.2014

Если у вас доморощенный, просто введите:

$ варить установить postgresql

Если у вас его нет, загрузите, набрав это в своем терминале:

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"

person user2373148    schedule 11.02.2014

Найдите libpq:

brew search libpq

Должен выводить libpqxx

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

brew install libpqxx
person jlucasps    schedule 21.08.2015

Вам нужно только установить libpq-dev:

sudo apt-get install libpq-dev

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

person Travis Reeder    schedule 23.07.2012
comment
В моем случае помогло только это. Спасибо! - person kovpack; 26.07.2014

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

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

sudo ARCHFLAGS="-arch x86_64" gem install pg

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

person CGK    schedule 01.10.2014
comment
Работает на OSX 10.9.5, по умолчанию ruby ​​версии 2.0, rbenv local версии 1.9.3. - person jlucasps; 21.08.2015
comment
Работает на OSX 10.11 СПАСИБО - person Yarin; 25.01.2016
comment
Работает на OSX 10.11.4. Спасибо!! - person Martyn Chamberlin; 01.04.2016

Проблема заключалась в том, что по какой-то причине он пытался скомпилироваться с /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)
person dfrankow    schedule 30.07.2012

У меня такая же проблема, но мой Postgres был установлен в

/Library/PostgreSQL/9.3

Обновил ~/.bash_profile, добавив:

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

Откройте новый терминал, запустите bundle update, и у меня тоже сработало. Спасибо, Ари.

person Trang Tung Nguyen    schedule 09.12.2013
comment
но для работы мне нужно проверить версию, а затем экспортировать PATH=/Applications/Postgres.app/Contents/Versions/9.4/bin:$PATH - person Prateep Kul; 29.01.2015

Вы можете установить опцию конфигурации сборки 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)

person Konstantine Kalbazov    schedule 01.09.2014

У меня была такая же проблема на моем компьютере с 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, и успех!!!

person Arup Rakshit    schedule 20.12.2014

Рабочее решение для OSX см. в этом руководстве http://krugerdavid.com/journal/how-to-install-xcode-homebrew-git-rvm-postgresql-ruby-1-9-3-on-snow.-леопард/

Он проведет вас через установку PostgreSQL с помощью homebrew. Протестировано и работает на OSX 10.8.3, PostgreSQL 9.2.3 и Ruby 2.0.0-p0

person Kristofor Carle    schedule 26.03.2013

Сначала удалите все версии 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

Установить PostgreSQL

brew update
brew install postgresql

Установить PG GEM

gem install pg

Вот и все. С уважением.

person pabloverd    schedule 02.12.2013

Вы можете сначала проверить, есть ли у вас файл 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

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

person user3256740    schedule 10.02.2014

В Федоре:

dnf install postgresql-devel
person Mayuresh Srivastava    schedule 06.08.2016

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

person Abe Petrillo    schedule 15.08.2016