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


86
$ sudo bundle install

Результат

Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (0.9.2.2) 
Using i18n (0.6.1) 
Using multi_json (1.3.6) 
Using activesupport (3.2.8) 
Using builder (3.0.4) 
Using activemodel (3.2.8) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.3) 
Using actionpack (3.2.8) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.11) 
Using mail (2.4.4) 
Using actionmailer (3.2.8) 
Using arel (3.0.2) 
Using tzinfo (0.3.33) 
Using activerecord (3.2.8) 
Using activeresource (3.2.8) 
Using bundler (1.2.1) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.7.5) 
Using rdoc (3.12) 
Using thor (0.16.0) 
Using railties (3.2.8) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.1.3) 
Installing pg (0.14.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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 /var/lib/gems/1.8/gems/pg-0.14.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/pg-0.14.1/ext/gem_make.out
An error occurred while installing pg (0.14.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.14.1'` succeeds before bundling.

Я делаю, $ gem install pg -v '0.14.1'но это не помогает

Мой Gemfile

source 'https://rubygems.org'

#gem 'rails', '3.0.9'

#gem 'sqlite3', '1.3.6', :group => :development


gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'


gem 'sqlite3'
gem 'pg'
gem 'taps'

gem 'json'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'


#group :production do
  #gem 'pg'
#end
#group :development do
  #gem 'sqlite3'
#end

gem_make.out

/usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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

mkmf.log

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- no

"gcc -E -I. -I/usr/lib/ruby/1.8/i686-linux -I. -D_FORTIFY_SOURCE=2 -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -I -fno-strict-aliasing -g -g -O2  -fPIC    conftest.c -o conftest.i"
conftest.c:1:22: fatal error: libpq-fe.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include <libpq-fe.h>
/* end */

--------------------

Помоги мне, пожалуйста. Спасибо.

Извините за этот текст. В вашем сообщении не так много контекста, чтобы объяснить разделы кода; пожалуйста, объясните свой сценарий более четко.


1
Как вы установили PostgreSQL?
Стефан

1
возможный дубликат Can't find the PostgreSQL client library (libpq)
skolima

Ответы:


184

Просто сделай это

$ sudo apt-get install libpq-dev

11
Это сделало это для меня +1
Младен Данич

Я попытался сделать это в Ubuntu 14.04, но он дал мне следующее: «libpq-dev: Depends: libpq5 (= 9.3.4-1), но 9.3.10-0ubuntu0.14.04 должен быть установлен»
Майкл Лафайет,

Но затем, когда я пытаюсь установить libpq5, он говорит: «libpq5 уже является самой новой версией».
Майкл Лафайет,

Версия PostgreSQL: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 на x86_64-unknown-linux-gnu, скомпилирован gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-разрядная версия
Майкл Лафайет,

1
Гениально! Приложение, которое я компилировал, также нуждалось в libpq-fe.hявном указании пути на --with-cflags=-I/usr/include/postgresqlслучай, если кто-то еще обнаружит то же самое.
Бен Джонсон

75

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

В зависимости от вашей среды:

  • Mac: brew install postgresql
  • Ubuntu :sudo apt-get install libpq-dev
  • RHEL :yum install postgresql-devel

Тогда беги gem install pgснова


1
Я попытался сделать это на Ubuntu 14.04, но он дал мне следующее: «libpq-dev: Depends: libpq5 (= 9.3.4-1), но 9.3.10-0ubuntu0.14.04 должен быть установлен»
Майкл Лафайет,

Но затем, когда я пытаюсь установить libpq5, он говорит: «libpq5 уже является самой новой версией». То же самое для PostgreSQL
Майкл Лафайет

Версия PostgreSQL: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 на x86_64-unknown-linux-gnu, скомпилирован gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-разрядная версия
Майкл Лафайет,

Привет, Майкл, я не уверен, что смогу ответить на ваш вопрос, потому что я не знаком с Ubuntu, но вы можете проверить ответ Майкла Дарранта здесь: stackoverflow.com/a/8887801/2484523
Фил

Работал над Red Hat EL7. Во время установки DBD :: Pg на Perl у меня отсутствовал файл заголовка.
Маркус

18

Попробуй это:

  1. варить установить postgresql
  2. gem install pg
  3. установка пакета

15

В системах Fedora / RHEL это помогло:

sudo yum install libpqxx-devel

Почему написано: Нет пакета libpqxx-devel.
itsji10dra

1
yum list libpq *, за которым следует yum install libpqxx-devel.x86_64
erichfw 02

10
  • ОС: Ubuntu
  • Языковое программирование: C

$ sudo apt-get install libpq-dev

В моем случае я неправильно указывал путь к каталогу. Так:

Из: gcc -o lib_version lib_version.c -I/usr/include/postgresql -lpq -std=c99

Кому: gcc -o lib_version lib_version.c -I /usr/include/postgresql -lpq -std=c99

GL


5

В Mac OS X запустите так:

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

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



4

У меня была эта проблема с сервером Jenkins на Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Затем, в зависимости от того, какая версия вам нужна, вы можете установить необходимую библиотеку

$ sudo yum list postgresql* | grep devel
postgresql92-devel.x86_64               9.2.18-1.59.amzn1          @amzn-main
postgresql94-devel.x86_64               9.4.9-1.67.amzn1           @amzn-main
postgresql8-devel.x86_64                8.4.20-5.52.amzn1          amzn-main
postgresql93-devel.x86_64               9.3.14-1.62.amzn1          amzn-main
postgresql95-devel.x86_64               9.5.4-1.71.amzn1           amzn-main

Затем вы можете просто установить соответствующую версию, в моем случае для версии 9.4:

sudo yum install postgresql94-devel

1
Ах! Превосходно. Конкретная версия (9.6) также была моим препятствием на пути к AMI.
DaveGauer



1

На Mac убедитесь, что ваш postgres связан. Вы можете сделать это

brew link --overwrite postgresql

Это устранило проблему для меня.


1

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

Установка postgresql давала еще одну ошибку

Error: The following directories are not writable by your user: /usr/local/lib/pkgconfig /usr/local/share/info /usr/local/share/man/man3

Эта ошибка была исправлена ​​путем предоставления доступа к указанным каталогам текущему пользователю.

sudo chown -R $(whoami) (path)


1

Это происходило со мной, используя capistrano при развертывании моего приложения в дистрибутиве centos7. Очевидно, гем требует некоторых файлов заголовков, которые можно решить, установив правильный пакет разработки.

Я исправил это, запустив sudo yum search postgres | grep devel и нашел правильный пакет для моей установки postgres, который был 10.

Тогда просто беги sudo yum install postgresql10-develи эврика!


Ты спас мне день! Поиск правильной разрабатываемой версии действительно помогает!
HoangLM

0

Это сработало для меня:

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

0

Я использую Ubuntu-16. И я использую метод, показанный здесь: https://www.postgresql.org/download/linux/ubuntu/ для установки postgresql-9.6; И я использую "sudo apt-get install libpq-dev"для установки devlib, но он все равно не работает. Итак, я использую метод lnдля установки софт-ссылки, вот он sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/:; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ И наконец решаю проблему.

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