Не удается найти заголовок libpq-fe.h при попытке установить pg gem

Я использую предварительную версию Ruby on Rails 3.1. Мне нравится использовать PostgreSQL, но проблема заключается в установке pg gem. Это дает мне следующую ошибку:

$ gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /home/u/.rvm/rubies/ruby-1.9.2-p0/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=/home/u/.rvm/rubies/ruby-1.9.2-p0/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 /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

Как мне решить эту проблему?

Ответ 1

В Ubuntu похоже, что заголовок является частью пакета libpq-dev (по крайней мере, в следующих версиях Ubuntu: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 ( Trusty Tahr) и 18.04 (бионический бобр)):

...
/usr/include/postgresql/libpq-fe.h
...

Поэтому попробуйте установить libpq-dev или его эквивалент для вашей ОС:

  • Для систем Ubuntu/Debian: sudo apt-get install libpq-dev
  • В системах Red Hat Linux (RHEL): yum install postgresql-devel
  • Для Mac Homebrew: brew install postgresql
  • Для Mac MacPorts PostgreSQL: gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • Для OpenSuse: zypper in postgresql-devel
  • Для ArchLinux: pacman -S postgresql-libs

Ответ 2

В macOS (ранее Mac OS X и OS X) используйте Homebrew для установки соответствующих заголовков:

brew install postgresql

а затем работает

gem install pg

должно сработать.

В качестве альтернативы, вместо установки всего postgresql, вы можете brew install libpq и экспортировать правильные PATH и PKG_CONFIG_PATH как описано в разделе "Предостережения".

Ответ 3

Я также попытался сделать gem install libpq-dev, но я получил эту ошибку:

Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

Однако я обнаружил, что работа с sudo apt-get (которую я пытаюсь избежать с помощью Ruby on Rails) работает, т.е.

sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04

то я смог сделать

gem install pg

без проблем.

Ответ 4

Я мог бы решить это по-другому. Я не нашел библиотеку в моей системе. Таким образом, я установил его с помощью приложения с основного сайта PostgreSQL. В моем случае (OS X) я нашел файл в /Library/PostgreSQL/9.1/include/ после завершения установки. У вас также может быть файл в другом месте, в зависимости от вашей системы, если у вас уже установлен PostgreSQL.

Благодаря этой ссылке о том, как добавить дополнительный путь для установки gem, я мог указать gem на lib с помощью этой команды:

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

После этого он работает, потому что теперь знает, где найти недостающую библиотеку. Просто замените путь на правильное место для вашего libpq-fe.h

Ответ 5

Не удается найти заголовок libpq-fe.h

У меня был успех на CentOS 7.0.1406, выполнив следующие команды:

~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

В качестве альтернативы вы можете настроить подключаемый модуль, чтобы всегда устанавливать pg с этими параметрами (полезно для запуска диспетчера в средах развертывания),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config

Ответ 6

Для CentOS 6.4,

yum install postgresql-devel
gem install pg

работал хорошо!

Ответ 7

Только для записи:

Приложение Ruby on Rails 4 в OS X с PostgresApp (в этом случае нужна версия 0.17.1 - вид старого проекта):

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Ответ 8

В моем случае это был пакет postgresql-server-dev-8.4 (я нахожусь Ubuntu 11.04 (Natty Narwhal), 64 бит).

Ответ 9

В Mac OS X выполните следующие действия:

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config*** - путь к pg_config

Ответ 10

Правильный ответ для пользователей Mac с помощью Postgres.app заключается в создании против libpq, поставляемого с этим пакетом. Например, с выпуском 9.4 (текущий на момент написания) все, что вам нужно, это:

export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg

Это сохранит ваш pg gem в синхронизации с точно установленной версией PostgreSQL. В этом случае установка чего-то из Homebrew - это отходы.

Ответ 11

У меня была такая же проблема на Amazon Linux. Я мог бы найти заголовок libpq-fe.h, но почему-то это не сработало.

Он исходил из разных версий пакетов, которые были установлены разными пользователями на машине. Были установлены PostgreSQL 9.2 и PostgreSQL 9.3. Итак, убедитесь, что ваша версия PostgreSQL перед включением библиотек.

Для меня волшебная командная строка:

sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel

Источник: Почти идиотское руководство по установке PostgreSQL 9.3, PostGIS 2.1 и pgRouting с Yum

Ответ 12

Более общий ответ для любого дистрибутива на основе Debian (который включает Ubuntu) заключается в следующем. Сначала установите пакет apt-file с правами root:

apt-get install apt-file

Это позволяет вам искать пакеты, содержащие файл. Затем обновите свою базу данных с помощью

apt-file update

(это можно запустить как обычный пользователь). Затем найдите отсутствующий заголовок, используя:

apt-file search libpq-fe.h

На моей машине это дает:

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h

Там вы идете!

Ответ 13

У меня была такая же проблема в Mac OS, но я быстро установил жемчуг PostgreSQL, используя в терминале следующее:

ARCHFLAGS="-arch x86_64" gem install pg

(я сначала установил PostgreSQL с brew install postgresql.)

Ответ 14

Я нашел этот ответ, и это был единственный, который работал у меня (Mac OS) - после исследования около двух дней:

$ sudo su

$ env ARCHFLAGS="-arch x86_64" gem install pg

Building native extensions.  This could take a while...
Successfully installed pg-0.11.0
1 gem installed
Installing ri documentation for pg-0.11.0...
Installing RDoc documentation for pg-0.11.0...

См. вопрос о переполнении стека Не удается найти клиентскую библиотеку PostgreSQL (libpq).

Ответ 15

Недавно я обновился до Mac X v10.10 (Yosemite) и с трудом создавал драгоценный камень pg.

Сообщаемая ошибка была типичной:

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

Мое решение было gem uninstall pg, а затем bundle update pg, чтобы заменить драгоценный камень последним. Я выполнил brew update; brew upgrade после установки Yosemite, чтобы получить последние версии пакетов, которые я установил ранее.

Ответ 16

На Mac я решил использовать этот код:

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

Ответ 17

Для MacOS без установки сервера PostgreSQL:

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"

Ответ 18

В CentOS я установил libpq-dev package, используя следующую команду

yum install postgresql-devel

Выполнение gem install pg возвращает ту же ошибку, что и "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config".

Установка драгоценного камня, как показано ниже, решена моя проблема

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config

Ответ 19

Я запускаю Postgres.app на Mac, и мне приходилось

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

первый. Тогда

bundle install

работал у меня.

Ответ 20

В FreeBSD (9.1) необходим пакет /usr/ports/database/postgresql -server *, который при установке также установит требуемый файл заголовка, который приведет к сбою установки "pg". Этот ответ помог мне найти решение, но разница в именах пакетов потребовала немного поиска.

Надеюсь, это поможет кому-то избежать царапин на голове при поиске пакета "-dev" в системе FreeBSD!

Ответ 21

Вкл Debian 7.0, 64-bit (Wheezy), просто запустите:

sudo apt-get install libpq-dev

После того как вы успешно установили libpq-dev, запустите:

bundle install

Ответ 22

В CentOS 6.5 (Squeeze) я создал файл:

$ sudo touch /etc/profile.d/psql.sh

с контентом:

pathmunge /usr/pgsql-9.3/bin

Обратите внимание, что вы должны установить свой путь PostgreSQL с файлом pg_config. Вы можете найти это с помощью команды:

$ sudo find / -iname pg_config

Сохраните файл:

$ sudo chmod +x /etc/profile.d/ruby.sh

и попробуйте выполнить команду еще раз.

Примечание. В любое время, когда вы меняете конфигурацию Bash - меняете конфигурацию profile.d - вы должны перезагрузить Bash.

Ответ 23

Местоположение libpq-fe.h зависит от того, где установлена ​​ваша установка PostgreSQL (которая зависит от того, как вы ее установили). Используйте locate (http://en.wikipedia.org/wiki/Locate_%28Unix%29), чтобы найти файл libpq-fe.h на вашем компьютере. Если он существует, он будет находиться в каталоге include вашей установки PostgreSQL.

$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h

Каталог bin, содержащий pg_config, будет находиться в том же каталоге, что и каталог include. Как следует из этой ошибки, используйте параметр --with-pg-config для установки драгоценного камня:

$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"

Обратите внимание, что вам может потребоваться запустить updatedb, если вы никогда не использовали locate, или если вы не обновили его после установки PostgreSQL.

Ответ 24

Я, наконец, решил эту проблему, но не использовал ранее описанные методы.

Используя brew install postgresql, я выясню, что он уже был установлен, но не связан.

  • Узнайте, где установлен PostgreSQL, и удалите его,

  • Затем brew install postgresql снова,

  • brew link postgresql

  • gem install pg

Ответ 25

У меня это было только на OSX, работающем brew и [email protected].

Мое исправление было следующим:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install

Ответ 26

В Ubuntu установите "libpq-dev", чтобы избавиться от этой проблемы.

sudo apt-get install libpq-dev

Ответ 27

У меня была эта проблема с Postgresql 9.6. Я смог это исправить, выполнив:

brew upgrade [email protected]
brew link [email protected] --force
gem install pg

Ответ 28

Я решил установить пакет postgresql-common. Этот пакет предоставляет двоичный файл pg_config, который, скорее всего, вам не хватает.

Ответ 29

У меня была аналогичная проблема, и это исправило это для меня:

gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server

Источник:

https://gist.github.com/oisin/6562181

Ответ 30

В OS X 10.9 (Mavericks), я brew-installed postgresql, а затем мне пришлось rvm reinstall мой Ruby. Я счастлив сейчас:)