967 Stimmen

Der Header 'libpq-fe.h' kann nicht gefunden werden, wenn man versucht, pg gem zu installieren

Ich verwende die Vorversion von Ruby on Rails 3.1. Ich würde gerne PostgreSQL verwenden, aber das Problem ist die Installation der pg gem. Ich erhalte die folgende Fehlermeldung:

$ 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

Wie kann ich dieses Problem lösen?

10voto

jelder Punkte 1930

Die richtige Antwort für Mac-Benutzer mit Postgres.app ist die Erstellung gegen die libpq die mit diesem Paket geliefert werden. Für die Version 9.4 (zum Zeitpunkt der Erstellung dieses Dokuments) benötigen Sie zum Beispiel nur ein Paket:

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

So bleibt Ihr pg gem genau mit der Version von PostgreSQL synchronisiert, die Sie installiert haben. Etwas aus Homebrew zu installieren ist in diesem Fall eine Verschwendung.

9voto

Fab V. Punkte 1012

Ich hatte das gleiche Problem bei Amazon Linux. Ich konnte den Header finden libpq-fe.h aber irgendwie hat es nicht funktioniert.

Das lag an den unterschiedlichen Versionen der Pakete, die von den verschiedenen Benutzern auf dem Rechner installiert wurden. Es wurden PostgreSQL 9.2 und PostgreSQL 9.3 installiert. Vergewissern Sie sich also über Ihre PostgreSQL-Version, bevor Sie die Bibliotheken einbinden.

Für mich war die magische Befehlszeile:

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

Quelle: Eine fast idiotensichere Anleitung zur Installation von PostgreSQL 9.3, PostGIS 2.1 und pgRouting mit Yum

8voto

Raju Punkte 119

Installieren Sie unter Ubuntu die "libpq-dev", um dieses Problem zu beheben.

sudo apt-get install libpq-dev

7voto

A. Rosas Punkte 151

Unter Fedora 32 konnte ich das gleiche Problem lösen, indem ich folgendes installierte libpq5-devel speziell.

Wenn Sie postgresql aus dem offiziellen Repository installieren, haben Sie mehrere Versionen, die das Problem nicht beheben, also ist es wirklich eine Frage des Ausprobierens, welche es braucht.

7voto

yoones Punkte 2259

Unter Debian Bullseye hat keine der vorhandenen Antworten das Problem für mich gelöst.

Falls es jemandem hilft, der die gleiche Konfiguration wie ich hat:

  1. Verwenden Sie das apt-Repository von PostgreSQL: https://wiki.postgresql.org/wiki/Apt
  2. sudo apt-get update && sudo apt-get dist-upgrade (Upgrade von PostgreSQL von v13 auf v14)
  3. sudo apt-get install libpq-dev
  4. gem install pg oder bundle install

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X