Rails install pg - Der Header 'libpq-fe.h kann nicht gefunden werden


86
$ sudo bundle install

Ergebnis

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.

Ich mache $ gem install pg -v '0.14.1'aber das ist keine Hilfe

Mein 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 */

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

Hilf mir bitte. Vielen Dank.

Entschuldigung für diesen Text. Ihr Beitrag hat nicht viel Kontext, um die Codeabschnitte zu erklären. Bitte erläutern Sie Ihr Szenario klarer.


1
Wie haben Sie PostgreSQL installiert?
Stefan


Antworten:


183

Mach das einfach

$ sudo apt-get install libpq-dev

11
Dies tat es für mich +1
Mladen Danic

Ich habe versucht, dies unter Ubuntu 14.04 zu tun, aber es gab mir Folgendes: "libpq-dev: Abhängig: libpq5 (= 9.3.4-1), aber 9.3.10-0ubuntu0.14.04 soll installiert werden"
Michael Lafayette

Wenn ich dann versuche, libpq5 zu installieren, heißt es: "libpq5 ist bereits die neueste Version."
Michael Lafayette

Die PostgreSQL-Version lautet: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 auf x86_64-unknown-linux-gnu, kompiliert von gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-Bit
Michael Lafayette

Brillant! Für die Anwendung, die ich kompilierte, musste auch der Pfad libpq-fe.hexplizit angegeben werden, --with-cflags=-I/usr/include/postgresqlfalls jemand anderes auf dasselbe stößt.
Ben Johnson

74

Dies wird unter Kann den Header 'libpq-fe.h nicht finden, wenn versucht wird, pg gem zu installieren

Abhängig von Ihrer Umgebung:

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

Dann gem install pgwieder laufen


1
Ich habe versucht, dies unter Ubuntu 14.04 zu tun, aber es gab mir Folgendes: "libpq-dev: Abhängig: libpq5 (= 9.3.4-1), aber 9.3.10-0ubuntu0.14.04 soll installiert werden"
Michael Lafayette

Wenn ich dann versuche, libpq5 zu installieren, heißt es: "libpq5 ist bereits die neueste Version." Gleiches gilt für PostgreSQL
Michael Lafayette

Die PostgreSQL-Version lautet: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 auf x86_64-unknown-linux-gnu, kompiliert von gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-Bit
Michael Lafayette

Hey Michael, ich bin nicht sicher, ob ich Ihre Frage beantworten kann, da ich mit Ubuntu nicht vertraut bin, aber Sie können die Antwort von Michael Durrant hier lesen
Phil

Arbeitete an Red Hat EL7. Bei einer Perl-Installation von DBD :: Pg fehlte die Header-Datei.
Marcus

18

Versuche dies:

  1. brauen installieren postgresql
  2. gem install pg
  3. Bundle installieren

15

Auf Fedora / RHEL-Systemen hat dies den Trick getan:

sudo yum install libpqxx-devel

Warum es heißt: Kein Paket libpqxx-devel verfügbar.
itsji10dra

1
yum list libpq * gefolgt von yum install libpqxx-devel.x86_64
erichfw

10
  • SO: Ubuntu
  • Sprachprogrammierung: C.

$ sudo apt-get install libpq-dev

In meinem Fall habe ich den Verzeichnispfad falsch angegeben. Damit:

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

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

GL


5

Unter Mac OS X laufen Sie wie folgt ab:

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

***/path/to/pg_config*** ist der Pfad zu pg_config


5

Für Amazon Linux (AWS):

sudo yum install postgresql-devel

Führen Sie dann Ihren Befehl erneut aus


4

Ich hatte dieses Problem mit einem Jenkins-Server auf Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Abhängig von der benötigten Version können Sie dann die erforderliche Bibliothek installieren

$ 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

Dann können Sie einfach die entsprechende Version installieren, in meinem Fall für Version 9.4:

sudo yum install postgresql94-devel

1
Ah! Ausgezeichnet. Die spezifische Version (9.6) war auch meine Straßensperre für AMI.
DaveGauer



1

Stellen Sie auf dem Mac sicher, dass Ihr Postgres verlinkt ist. Sie können es tun, indem Sie

brew link --overwrite postgresql

Dies hat das Problem für mich behoben.


1

brew install postgresql arbeitete für mich.

Die Installation von postgresql ergab einen weiteren Fehler

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

Dieser Fehler wurde behoben, indem dem aktuellen Benutzer Zugriff auf die genannten Verzeichnisse gewährt wurde

sudo chown -R $(whoami) (path)


1

Dies geschah, als ich capistrano verwendete, während ich meine App in einer centos7-Distribution bereitstellte. Anscheinend benötigt gem einige Header-Dateien, die durch die Installation des richtigen Entwicklungspakets behoben werden können.

Ich habe es durch Ausführen behoben sudo yum search postgres | grep develund das richtige Paket für meine Postgres-Installation gefunden, nämlich 10.

Dann einfach laufen sudo yum install postgresql10-devel und eureka!


Du hast meinen Tag gerettet! Es hilft wirklich, die richtige Entwicklungsversion zu finden!
HoangLM

0

Das hat bei mir funktioniert:

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

0

Ich benutze Ubuntu-16. Und ich verwende die hier gezeigte Methode: https://www.postgresql.org/download/linux/ubuntu/ , um postgresql-9.6 zu installieren; Und ich benutze "sudo apt-get install libpq-dev", um die devlib zu installieren. Aber es kann immer noch nicht funktionieren. Also benutze ich die Methode ln, um einen Softlink herzustellen, hier ist es : sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ Und ich löse das Problem endlich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.