it-swarm.com.de

Bei der Installation von pg gem kann der Header 'libpq-fe.h nicht gefunden werden

Ich verwende die Vorversion von Ruby on Rails 3.1. Ich benutze gerne PostgreSQL, aber das Problem ist die Installation von pg gem Es gibt 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 löse ich dieses Problem?

672
demonchand

Es sieht so aus, als ob der Header in Ubuntu Teil des libpq-dev-Pakets ist (zumindest in den folgenden Ubuntu-Versionen: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 (Trusty Tahr) und 18.04 (Bionic Beaver)):

...
/usr/include/postgresql/libpq-fe.h
...

Versuchen Sie also, libpq-dev oder sein Äquivalent für Ihr Betriebssystem zu installieren:

  • Für Ubuntu/Debian-Systeme: Sudo apt-get install libpq-dev
  • On Red Hat Linux (RHEL) -Systeme: yum install postgresql-devel
  • Für Mac Homebrew : brew install postgresql
  • Für Mac MacPorts PostgreSQL: gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • Für OpenSuse : zypper in postgresql-devel
  • Für ArchLinux : pacman -S postgresql-libs
1084
mu is too short

Verwenden Sie unter macOS (zuvor Mac OS X und OS X) Homebrew , um die richtigen Header zu installieren:

brew install postgresql

und dann rennen

gem install pg

sollte arbeiten.

Anstelle der Installation der gesamten postgresql können Sie alternativ brew install libpq und die richtige PATH und PKG_CONFIG_PATH exportieren, wie im Abschnitt 'Vorbehalte' beschrieben

141
iwasrobbed

Ich hatte auch versucht, gem install libpq-dev auszuführen, aber ich habe folgende Fehlermeldung erhalten:

Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

Ich fand jedoch, dass die Installation mit Sudo apt-get (die ich mit Ruby on Rails vermeiden wollte) funktionierte, d. H.

Sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04

dann konnte ich es tun

gem install pg

ohne Probleme.

113
Michael Durrant

Ich könnte das auf andere Weise lösen. Ich habe die Bibliothek nicht in meinem System gefunden. Daher habe ich es mit einer App von der PostgreSQL-Hauptseite installiert. In meinem Fall (OS X) fand ich die Datei unter /Library/PostgreSQL/9.1/include/, nachdem die Installation abgeschlossen war. Möglicherweise haben Sie die Datei auch an einem anderen Ort, abhängig von Ihrem System, wenn Sie bereits PostgreSQL installiert haben.

Dank dieses Links auf wie füge ich einen zusätzlichen Pfad für die Gem-Installation hinzu , konnte ich den Edelstein mit diesem Befehl auf die lib zeigen

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

Danach funktioniert es, weil es jetzt weiß, wo die fehlende Bibliothek zu finden ist. Ersetzen Sie einfach den Pfad durch den richtigen Ort für Ihre libpq-fe.h

40
David Pelaez

Der Header libpq-fe.h kann nicht gefunden werden 

ich hatte Erfolg auf CentOS 7.0.1406 und führte die folgenden Befehle aus:

~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

Alternativ können Sie den Bundler so konfigurieren, dass pg immer mit diesen Optionen installiert wird (hilfreich beim Ausführen des Bundlers in Implementierungsumgebungen) 

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
26
lfender6445

Für CentOS 6,4,

yum install postgresql-devel
gem install pg

gut gearbeitet!

22
Arivarasan L

Nur für das Protokoll:

Ruby on Rails 4-Anwendung in OS X mit PostgresApp (in diesem Fall wird die Version 0.17.1 benötigt - Art eines alten Projekts):

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
14
pablomarti

In meinem Fall war das Paket postgresql-server-dev-8.4 (ich bin auf Ubuntu 11.04 (Natty Narwhal), 64 Bit).

12
Johann

Unter Mac OS X laufen Sie so:

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

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

12
Jiemurat

Die richtige Antwort für Mac-Benutzer mit Postgres.app ist das Erstellen der libpq, die mit diesem Paket geliefert wird. Zum Beispiel ist mit dem Release 9.4 (aktuell zum Zeitpunkt der Veröffentlichung) alles, was Sie brauchen:

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

Dadurch bleibt Ihr pg gem mit der von Ihnen installierten Version von PostgreSQL synchron. Die Installation von Homebrew ist in diesem Fall eine Verschwendung.

11
jelder

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

Es kam von den verschiedenen Versionen der Pakete, die von den verschiedenen Benutzern auf dem Computer installiert wurden. PostgreSQL 9.2 und PostgreSQL 9.3 wurden installiert. Stellen Sie daher sicher, dass Ihre PostgreSQL-Version vorhanden ist, bevor Sie die Bibliotheken hinzufügen.

Für mich war die magische Befehlszeile:

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

Quelle: Ein fast idiotischer Leitfaden zur Installation von PostgreSQL 9.3, PostGIS 2.1 und pgRouting mit Yum

8
Fab V.

Eine allgemeinere Antwort für jede Debian-basierte Distribution (die Ubuntu beinhaltet) ist die folgende. Installieren Sie zuerst das apt-file-Paket, das als root ausgeführt wird:

apt-get install apt-file

Dadurch können Sie nach Paketen suchen, die eine Datei enthalten. Aktualisieren Sie anschließend die Datenbank mit

apt-file update

(kann als normaler Benutzer ausgeführt werden). Suchen Sie dann nach dem fehlenden Header mit:

apt-file search libpq-fe.h

Auf meiner Maschine ergibt dies:

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h

Da gehts!

7

Auf einem Mac habe ich es mit diesem Code gelöst:

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
4
Mario

Ich fand diese Antwort, und es war die einzige, die für mich (Mac OS) funktionierte - nachdem ich ungefähr zwei Tage recherchiert hatte:

$ Sudo su

$ env ARCHFLAGS="-Arch x86_64" gem install pg

Building native extensions.  This could take a while...
Successfully installed pg-0.11.0
1 gem installed
Installing ri documentation for pg-0.11.0...
Installing RDoc documentation for pg-0.11.0...

Siehe Stapelüberlauf-Frage Die PostgreSQL-Client-Bibliothek (libpq) kann nicht gefunden werden.

4
Cynthia Sanchez

Ich hatte das gleiche Problem unter Mac OS, aber ich habe den PostgreSQL-Edelstein auf folgende Weise in einem Terminal installiert:

ARCHFLAGS="-Arch x86_64" gem install pg

(Ich habe PostgreSQL zuerst mit brew install postgresql installiert.)

4
rassom

Ich habe kürzlich ein Upgrade auf Mac OS X 10.10 (Yosemite) durchgeführt und hatte Schwierigkeiten beim Erstellen des pg-Gem.

Der gemeldete Fehler war typisch:

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

Meine Lösung bestand darin, gem uninstall pg und dann bundle update pg den Edelstein durch den neuesten zu ersetzen. Ich habe brew update; brew upgrade nach der Yosemite-Installation ausgeführt, um die neuesten Versionen der Pakete zu erhalten, die ich zuvor installiert hatte.

4

Auf CentOS habe ich libpq-dev package mit dem folgenden Befehl installiert

yum install postgresql-devel

Beim Ausführen von gem install pg wurde derselbe Fehler wie bei "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config" zurückgegeben.

Die Installation des Edelsteins als unten gelöst hat mein Problem gelöst

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
3
user2086641

Für MacOS ohne PostgreSQL-Server zu installieren:

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
3
Michael A.

Ich verwende Postgres.app auf einem Mac und musste es 

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

zuerst. Dann

bundle install

arbeitete für mich.

3
joh-mue

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

Sudo apt-get install libpq-dev
2
Raju

Unter CentOS 6.5 (Squeeze) habe ich eine Datei erstellt:

$ Sudo touch /etc/profile.d/psql.sh

mit inhalt:

pathmunge /usr/pgsql-9.3/bin

Beachten Sie hier, dass Sie Ihren PostgreSQL-Pfad mit der Datei pg_config festlegen müssen. Sie können dies mit dem Befehl finden:

$ Sudo find / -iname pg_config

Speicher die Datei:

$ Sudo chmod +x /etc/profile.d/Ruby.sh

und versuchen Sie, Ihren Befehl erneut auszuführen.

Hinweis: Bei jeder Änderung der Bash -Konfiguration - Änderung des Profils.d - Konfiguration sollten Sie Bash neu laden.

2
lucianosousa

Auf Debian 7.0, 64-Bit (Wheezy), führen Sie einfach Folgendes aus:

Sudo apt-get install libpq-dev

Nachdem Sie libpq-dev erfolgreich installiert haben, führen Sie Folgendes aus:

bundle install
2
Eric Wu

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

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

Das Verzeichnis bin, das pg_config enthält, befindet sich in demselben Verzeichnis wie das Verzeichnis include. Wie der Fehler vermuten lässt, verwenden Sie die Option --with-pg-config, um den gem zu installieren:

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

Beachten Sie, dass Sie möglicherweise updatedb ausführen müssen, wenn Sie locate noch nie verwendet haben oder seit der Installation von PostgreSQL nicht aktualisiert wurden.

2
akbrown

Ich hatte gerade dies auf OSX, das brew und [email protected] lief.

Mein Fix war folgendes:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
2
Nick

Ich habe dieses Problem endlich gelöst, jedoch nicht mit den zuvor beschriebenen Methoden.

Mit brew install postgresql stelle ich fest, dass es bereits installiert war, aber nicht verlinkt wurde.

  1. Finden Sie heraus, wo PostgreSQL installiert ist, und löschen Sie es.

  2. Dann wieder brew install postgresql,

  3. brew link postgresql

  4. gem install pg

2
Chile Yang

Unter FreeBSD (9.1) ist das erforderliche Paket/usr/ports/database/postgresql-server *, das bei der Installation auch die erforderliche Header-Datei installiert, durch die die gem-Installation von "pg" fehlschlägt. Diese Antwort hier half mir, die Lösung zu finden, aber der Unterschied bei den Paketnamen erforderte ein wenig Recherche.

Hoffentlich hilft dies jemandem, ein bisschen Kopfkratzer zu vermeiden, wenn er auf einem FreeBSD-System nach dem Paket "-dev" sucht!

2
Claus Due

Für AltLinux muss das Paket postgresqlx.x-devel (in meinem Fall postgresql9.5-devel) installiert sein:

apt-get install postgresql9.5-devel

Ich hatte dieses Problem mit Postgresql 9.6. Ich konnte das Problem beheben, indem ich Folgendes tat:

brew upgrade [email protected]
brew link [email protected] --force
gem install pg
1
mwalsher

Ich hatte ein ähnliches Problem und dieses Problem wurde für mich behoben:

gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server

Quelle:

https://Gist.github.com/oisin/6562181

1
dunkles

Unter OS X 10.9 (Mavericks) habe ich brew-installed postgresql und musste dann meinen Ruby rvm reinstall. Ich bin jetzt glücklich :)

1
ether_joe

Ich habe dieses Problem gelöst, indem das Paket 'postgresql-common' installiert wurde. Dieses Paket enthält die pg_config-Binärdatei, die am wahrscheinlichsten fehlte.

1
Fabrizio Regini

Unter OS X und MacPorts ist das -devel-Paket für PostgreSQL nicht mehr erforderlich. Die Installation des pg gem funktioniert folgendermaßen:

~ > Sudo port install postgresql-devel
...
Error: postgresql-devel has been replaced by postgresql91; please install that port instead
~ > gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql95/bin/pg_config

Siehe auch diesen Beitrag .

0
Jens

Der gleiche Fehler ist bei Postgres über asdf aufgetreten. Die pg-config-Lösungen haben bei mir nicht funktioniert. Stattdessen musste ich den Postgres-Include-Ordner finden, der die Datei enthält, und den Befehl mit dem Flag --with-pg-include ausführen

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

Auf Arch Linux müssen Sie postgresql-libs installieren:

Sudo pacman -Syu postgresql-libs
0

Für Mac OS X installieren Sie einfach https://postgresapp.com/ und befolgen Sie die Schritte für den Befehlszeilenabschnitt 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

Schritt 1) ​​Stellen Sie sicher, dass Postgress in Ihrem System installiert ist. 

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, direkt auf libpq-fe.h zuzugreifen und können nicht finden. Wir müssen also jede solche Datei manuell durchsuchen und libpq-fe.h durch postgresql/libpq-fe.h ersetzen.

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

3) Gehen Sie zu Alle in Schritt 2 aufgeführten Dateien, und ändern Sie libpq-fe.h manuell mit postgresql/libpq-fe.h.

0
sapy

Nur das Deinstallieren (Sudo apt-get purge) von libpq-dev und das erneute Installieren funktionierten für mich. 

0
vasilakisfil

Meine Lösung für Fedora 30:

Sudo dnf install /usr/include/libpq-fe.h
0
Aarón Castro