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?

4voto

joh-mue Punkte 1471

Ich führe Postgres.app auf einem Mac aus, und ich musste

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

zuerst. Dann

bundle install

hat für mich funktioniert.

4voto

Ich bin auf denselben Fehler gestoßen, als ich Postgres über asdf installiert habe. Die pg-config-Lösungen haben bei mir nicht funktioniert. Stattdessen musste ich den Include-Ordner von postgres finden, der die Datei enthält, und den Befehl mit der Option --with-pg-include Flagge

gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include

3voto

Chinmaya Biswal Punkte 257

Für Alpine beheben Sie den Fehler bitte wie folgt

apk add --no-cache postgresql-dev

3voto

Samar Punkte 1735

Auf Ubuntu 20.04 hatte ich bereits libpq5:amd64 Version 13.2-1.pgdg20.04+1. Als ich nun versuchte, libpq-dev aus dem apt-Repository zu installieren, erhielt ich

The following packages have unmet dependencies:
libpq-dev : Depends: libpq5 (= 12.6-0ubuntu0.20.04.1) but 13.2-1.pgdg20.04+1 is to be installed

Ich habe mir die Deb von http://ftp.us.debian.org/debian/pool/main/p/postgresql-13/libpq-dev_13.2-1_amd64.deb und tat Folgendes:

mkdir -p /tmp/libpq-dev
dpkg-deb -R libpq-dev_13.2-1_amd64.deb /tmp/libpq-dev
sed -i 's|= 13.2-1|= 13.2-1.pgdg20.04+1|' /tmp/libpq-dev/DEBIAN/control
dpkg-deb -b /tmp/libpq-dev /tmp/libpq-dev-new.deb
sudo dpkg -i /tmp/libpq-dev-new.deb

Seitdem benutze ich den Edelstein mit Freude. Keine zusätzlichen Installationen oder so.

3voto

akbrown Punkte 31

Der Standort von libpq-fe.h hängt davon ab, wo sich Ihre PostgreSQL-Installation befindet (was davon abhängt, wie Sie sie installiert haben). verwenden locate ( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ), um die libpq-fe.h Datei auf Ihrem Rechner. Wenn sie existiert, befindet sie sich im Verzeichnis include Verzeichnis Ihrer PostgreSQL-Installation.

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

Die bin Verzeichnis, das Folgendes enthält pg_config befindet sich im selben Verzeichnis wie die include Verzeichnis. Wie der Fehler andeutet, verwenden Sie die Option --with-pg-config, um das Gem zu installieren:

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

Beachten Sie, dass Sie möglicherweise die Funktion updatedb wenn Sie noch nie benutzt haben locate oder wenn Sie seit der Installation von PostgreSQL nicht mehr aktualisiert haben.

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