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?
Стефан


Відповіді:


184

Просто зробіть це

$ sudo apt-get install libpq-dev

11
Це зробило це для мене +1
Младен Даніч

Я намагався зробити це на Ubuntu 14.04, але це дало мені таке: "libpq-dev: Залежить: libpq5 (= 9.3.4-1), але 9.3.10-0ubuntu0.14.04 потрібно встановити"
Майкл Лафайєтт

Але тоді, коли я намагаюся встановити libpq5, там пише "libpq5 - це вже найновіша версія".
Michael Lafayette

Версія PostgreSQL: psql - версія: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 на x86_64-unknown-linux-gnu, складений gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-розрядна версія
Michael Lafayette

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

75

На це дається відповідь Не вдається знайти заголовок 'libpq-fe.h при спробі встановити pg gem

Залежно від вашого оточення:

  • Мак: brew install postgresql
  • Ubuntu :sudo apt-get install libpq-dev
  • RHEL :yum install postgresql-devel

Потім біжи gem install pgзнову


1
Я намагався зробити це на Ubuntu 14.04, але це дало мені таке: "libpq-dev: Залежить: libpq5 (= 9.3.4-1), але 9.3.10-0ubuntu0.14.04 потрібно встановити"
Майкл Лафайєт,

Але тоді, коли я намагаюся встановити libpq5, там пише "libpq5 - це вже найновіша версія". Те саме для PostgreSQL
Michael Lafayette

Версія PostgreSQL: psql --версія: 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. Мені не вистачало заголовного файлу під час встановлення Perl DBD :: Pg.
Маркус

18

Спробуйте це:

  1. заваріть встановіть postgresql
  2. встановити самоцвіт стор
  3. встановити пакет

15

У системах Fedora / RHEL це зробило трюк:

sudo yum install libpqxx-devel

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

1
список yum 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. Очевидно, gem вимагає деяких заголовкових файлів, які можна вирішити, встановивши правильний пакет розробки.

Я це виправив, запустивши 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.