wake-up-neo.com

PostgreSQL-Clientbibliothek (libpq) kann nicht gefunden werden

Ich versuche, PostgreSQL für Rails unter Mac OS X 10.6 zu installieren. Zuerst habe ich die MacPorts-Installation ausprobiert, aber das ging nicht gut, also habe ich die One-Click-DMG-Installation durchgeführt. Das schien zu funktionieren.

Ich habe den Verdacht, dass ich die PostgreSQL-Entwicklungspakete installieren muss, aber ich habe keine Ahnung, wie das unter OS X zu tun ist.

Folgendes bekomme ich, wenn ich versuche, Sudo gem install pg zu tun:

$ Sudo gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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
    --with-pqlib
    --without-pqlib
    --with-libpqlib
    --without-libpqlib
    --with-ms/libpqlib
    --without-ms/libpqlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.11.0/ext/gem_make.out
145
Jason Swett

Lösung: PostgreSQL mit Homebrew neu installiert.

18
Jason Swett
$ 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...

HAT FUNKTIONIERT!

346

Ich habe hier die bestbewertete Antwort ausprobiert:

env ARCHFLAGS="-Arch x86_64" gem install pg

Als ich jedoch versuchte, die Bundle-Installation erneut auszuführen, gab es den gleichen Fehler. Dann habe ich versucht, das gesamte Bundle mit ARCHFLAGS so zu installieren:

ARCHFLAGS="-Arch x86_64" bundle install

Arbeitete für mich! Stellen Sie sicher, dass Sie x86_64 durch i386 ersetzen, abhängig von Ihrer Architektur. 

77
Christine Loh

Ich hatte gerade dieses Problem bei der Verwendung der EnterpiseDB .dmg. Wenn das derselbe Gedanke ist, den Sie verwendet haben, habe ich es durch die Angabe der richtigen Architektur zum Laufen gebracht:

Sudo env ARCHFLAGS="-Arch i386" gem install pg

Es gibt einige Tutorials im Web, die besagten, eine andere Architektur anzugeben (wie "-Arch x86_64" für Benutzer, die MacPorts verwendeten), aber es funktionierte nicht für mich, da ich die Installation der einzelnen Datei verwendete.

31
bobfet1

Wenn Sie Yosemite verwenden:

brew install postgres

Dann:

ARCHFLAGS="-Arch x86_64" gem install pg

Und (optional) Endlich, wenn Sie Autovakuum starten möchten ...

postgres -D /usr/local/var/postgres
23
etusm

Vielleicht kannst du dieses probieren:

ARCHFLAGS="-Arch i386 -Arch x86_64" gem install pg

Um die Architektur Ihrer Bibliothek kennenzulernen, können Sie diese verwenden

file /usr/local/lib/libpq.dylib 

was in meinem Fall nur 1 Architektur ergab (installiert über Homebrew):

/usr/local/lib/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64
21
ybart

Fake out gem durch Präfix der entsprechenden Umgebungsvariablen. Wenn Sie von MacPorts aus installieren, sollten Sie die folgenden Schritte ausführen können:

% /opt/local/lib/postgresql91/bin/pg_config
BINDIR = /opt/local/lib/postgresql91/bin
DOCDIR = /opt/local/share/doc/postgresql
HTMLDIR = /opt/local/share/doc/postgresql
INCLUDEDIR = /opt/local/include/postgresql91
PKGINCLUDEDIR = /opt/local/include/postgresql91
INCLUDEDIR-SERVER = /opt/local/include/postgresql91/server
LIBDIR = /opt/local/lib/postgresql91
PKGLIBDIR = /opt/local/lib/postgresql91
LOCALEDIR = /opt/local/share/locale
MANDIR = /opt/local/share/man
SHAREDIR = /opt/local/share/postgresql91
SYSCONFDIR = /opt/local/etc/postgresql91
PGXS = /opt/local/lib/postgresql91/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/opt/local' '--sysconfdir=/opt/local/etc/postgresql91' '--bindir=/opt/local/lib/postgresql91/bin' '--libdir=/opt/local/lib/postgresql91' '--includedir=/opt/local/include/postgresql91' '--datadir=/opt/local/share/postgresql91' '--mandir=/opt/local/share/man' '--with-includes=/opt/local/include' '--with-libraries=/opt/local/lib' '--with-openssl' '--with-bonjour' '--with-readline' '--with-zlib' '--with-libxml' '--with-libxslt' '--enable-thread-safety' '--enable-integer-datetimes' '--with-ossp-uuid' 'CC=/usr/bin/gcc-4.2' 'CFLAGS=-pipe -O2 -Arch x86_64' 'LDFLAGS=-L/opt/local/lib -Arch x86_64' 'CPPFLAGS=-I/opt/local/include -I/opt/local/include/ossp'
CC = /usr/bin/gcc-4.2
CPPFLAGS = -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/libxml2 -I/opt/local/include
CFLAGS = -pipe -O2 -Arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL = 
LDFLAGS = -L/opt/local/lib -Arch x86_64 -L/opt/local/lib -L/opt/local/lib -Wl,-dead_strip_dylibs
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lm 
VERSION = PostgreSQL 9.1beta1

Ziehen Sie von dort die Variablen LIBDIR, INCLUDEDIR, CPPFLAGS, LIBS und LDFLAGS heraus (die, von denen ich glaube, dass Sie zum Laufen gebracht werden, ist LIBDIR). Dann würden Sie laufen:

setenv PATH /opt/local/lib/postgresql91/bin:${PATH}
Sudo env LDFLAGS=-L`pg_config --libdir` CPPFLAGS=`pg_config --cppflags` gem install pg

Das sollte es für dich tun. Lass es mich wissen, wenn es nicht so ist.

5
Sean

Das Problem, das wir hatten, war ziemlich komisch.

Ruby -v # was ok (rbenv)
gem -v # was ok (rbenv)

als wir jedoch eine Bundle-Installation durchgeführt haben, wurde für die von rbenv installierte Ruby-Version kein Bundler installiert. Wenn Sie also die Bundle-Installation eingaben, wurde der Bundler des Systems verwendet.

Stellen Sie daher vor der Bundle-Installation sicher, dass Sie den Bundler durch Ausführen installiert haben

gem install bundler
5
Tibastral

Ich glaube nicht, dass Sie die Postgres-Entwicklungsdateien benötigen. Alles, was Sie brauchen, sollte in Ihrem Installationsprogramm enthalten sein. Es ist wahrscheinlicher, dass sich der Pfad, in dem sie installiert werden, nicht in Ihrem Umgebungspfad befindet, und daher kann gem sie nicht finden, wenn er pg kompiliert.

Sie sollten gem install pg nicht als root ausführen müssen. Wenn Sie dies tun, ist es wahrscheinlich, dass Ihr PATH (Roots PATH, wenn run mit Sudo ausgeführt wird) nicht die erforderlichen Informationen enthält.

Folgendes funktioniert normalerweise für mich:

# Might be different depending on where your installer installed postgres 8.3
export PATH=$PATH:/Library/PostgreSQL/8.3/include/
export ARCHFLAGS='-Arch x86_64'
gem install pg
3
Brett Bender

Dies ist, was schließlich für mich getan hat (Kombination mehrerer zuvor bereitgestellter Lösungen mit anderen Beiträgen):

$ Sudo env ARCHFLAGS = "- Arch x86_64" gem install pg - with-pg-include =/Library/PostgreSQL/9.6/include /

3
Marcus Silveira

Die ARCHFLAGS-Antwort, die von anderen vorgeschlagen wurde, funktioniert nicht, wenn Sie irgendwie eine 64-Bit-Version von Postgres (die von Homebrew installiert wird) und eine 32-Bit-Version von Ruby erhalten. Aus irgendeinem Grund besteht rbenv darauf, Ruby 1.9.2-p290 als 32-Bit für mich zu erstellen, was eine Verknüpfung mit 64-Bit-Postgres unmöglich macht.

Überprüfen Sie die Architektur Ihrer Ruby-Binärdatei mit

file `which Ruby`

oder wenn Sie Rbenv verwenden

file `rbenv which Ruby`

Und vergleiche gegen deine Postgres:

file `which postgres`

Wenn es eine falsche Übereinstimmung gibt, müssen Sie Postgres oder Ruby erneut installieren. Mit rbenv habe ich das Problem gelöst, indem ich zu einer anderen Version gewechselt bin: 1.9.3-p194 statt 1.9.2-p290.

1
Leopd

Also im Grunde habe ich das gemacht ;-)

brew install postgres
1
Jackie Chan

So habe ich es geschafft, an Mavericks zu arbeiten. Hinweis: Ich hatte bereits postgresql 9.3 von Homebrew installiert.

  1. Aktualisieren Sie Xcode aus dem App Store auf 5.0

  2. Installieren Sie Befehlszeilen-Entwicklerwerkzeuge

    xcode-select --install

  3. Xcode-Lizenz zustimmen

    Sudo xcodebuild -Lizenz

  4. Edelstein installieren

    ARCHFLAGS = "- Arch x86_64" gem install pg

1
Michał Szajbe

Ich bin wahrscheinlich zu spät zur Party hier, aber in meinem Fall habe ich rbenv verwendet und auf Ruby 2.2.3 aktualisiert. Ich musste Bundler installieren, um meinen zu arbeiten, ich hatte eine alte Systemversion.

gem install bundler

0
mchapman17

Auf einem Mac können Sie dies versuchen (funktioniert für mich): Gem install pg - with-pg-include =/Library/PostgreSQL/9.5/include Holen: pg-1.0.0.gem (100%) Erstellen nativer Erweiterungen mit: 'with-pg-include =/Library/PostgreSQL/9.5/include' Dies kann eine Weile dauern ... Die Installation der Dokumentation pg-1.0.0 .__ für pg-1.0.0 Installieren der ri-Dokumentation für pg-1.0.0 Nach der Installation der Dokumentation für pg nach 3 Sekunden 1 gem installiert

(diesen Teil "/Library/PostgreSQL/9.5/include" müssen Sie Ihren Postgres-Pfad angeben.)

0
Marcos Riveros

Wie oben erwähnt, hat dies mit der Tatsache zu tun, dass sich zwei Ruby-Bögen auf rbenv /usr/bin/Ruby: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [i386:Mach-O executable i386] befinden. Ich musste einfach pg gem forcing x86_64 Arch installieren, das mit diesem Befehl verwendet werden soll:

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

Denken Sie daran, Ihren bash_profile auf dem neuesten Stand zu haben

Fügen Sie den Pfad Ihrer Postgres hinzu. In diesem Fall verwende ich die Postgres-App (OSX) anstelle von brew ( https://postgresapp.com/ ).

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

Laden Sie die Bash mit

Sudo vi ~/.bash_profile

Danach konnte ich endlich pg gem erfolgreich installieren.

Hoffe das hilft!

0
d1jhoni1b