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?

0voto

sapy Punkte 7878

Schritt 1) Vergewissern Sie sich, dass postgress in Ihrem System installiert ist (Wenn es bereits installiert ist und Sie postgress server auf Ihrem Rechner ausführen können, fahren Sie mit Schritt (2) fort)

apt-get install postgresql postgresql-contrib (sol - fatal error: libpq-fe.h: No such file or directory)
sudo apt-get install ruby-dev (required to install postgress below)
sudo gem install pg
sudo service postgresql restart

Schritt 2) Einige der C++-Dateien versuchen, auf libpq-fe.h direkt und kann nicht finden. Wir müssen also jede solche Datei manuell suchen und ersetzen libpq-fe.h mit postgresql/libpq-fe.h

Befehl zum Suchen aller Vorkommen von libpq-fe.h in allen Verzeichnissen und Unterverzeichnissen ist grep -rnw ./ -e 'libpq-fe.h'

3) Gehen Sie zu allen Dateien, die durch den in Schritt 2 ausgeführten Befehl aufgelistet werden, und ändern Sie manuell libpq-fe.h mit postgresql/libpq-fe.h .

0voto

RaviPatidar Punkte 1316

Ich habe alle Lösungen ausprobiert, aber nur der folgende Befehl funktioniert

pip install psycopg2-binary

0voto

Roel Van de Paar Punkte 1716

Ubuntu 20.04.1 LTS, schien dies für mich zu funktionieren:

sudo apt-get install ruby ruby-dev libpqxx-dev libpq-fe-dev libpq-dev 
sudo gem install pg -- --with-pg-config=/usr/include/postgresql/pg_config --with-pg-include=/usr/include/postgresql/

0voto

Für Mac OS X installieren Sie einfach https://postgresapp.com/ und folgen Sie den Schritten für den Kommandozeilenbereich und Ruby

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp

Dann

sudo ARCHFLAGS="-arch x86_64" gem install pg

0voto

Philip Kirkbride Punkte 19451

Unter Arch Linux müssen Sie Folgendes installieren postgresql-libs :

sudo pacman -Syu postgresql-libs

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