Pg gem kann in Mavericks mit Postgres.app nicht installiert werden

74

Ich versuche, das pg-Juwel für die Verwendung mit Postgres.app auf meinem lokalen Computer zu installieren. Ich leite Mavericks.

Postgres.app ist installiert und läuft einwandfrei, aber ich kann das Juwel nicht zum Laufen bringen. Ich habe folgendes getan:

  1. Verwendete den Befehl 'env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config' aus der Postgres.app-Dokumentation
  2. Homebrew wurde aktualisiert und Apple GCC 4.2 installiert
  3. Installierte die Xcode-Entwicklertools
  4. Mein $ PATH wurde aktualisiert, um sowohl auf die Verzeichnisse Postgres.app bin als auch lib zu verweisen

Alles ohne Erfolg. Hier ist die spezifische Fehlermeldung, die ich erhalte:

Building native extensions with: '--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config'
This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

    /Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
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
    --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=/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
    --with-pg
    --without-pg
    --with-pg-config
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/

Ich würde mich über jede Hilfe freuen, die Sie anbieten können. Vielen Dank!

Blundin
quelle

Antworten:

261

Sie haben wahrscheinlich den falschen Weg für --with-pg-config, überprüfen Sie, ob es tatsächlich da ist.

Sie finden den richtigen Weg zu pg_config:

find /Applications -name pg_config

In der neuesten Postgres.app-Version lautet der Pfad:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
Tom De Leu
quelle
Peinlich genug, das war's. Nach dem Upgrade auf die neueste Version von Postgres.app hat sich der Pfad geändert und ich habe es nicht bemerkt. Vielen Dank!
Blundin
Das war es auch für mich!
JD Maresco
23
Danke dafür! Aus irgendeinem Grund musste ich auf meiner Installation laufen$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config .
Gabriel Osorio
3
Bei neueren Installationen von Postgres.app müssen Sie möglicherweise diesen Befehl verwendengem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config .
Sean,
1
Als weitere Referenz habe ich gestern gerade Postgres.app heruntergeladen und meine pg_config befindet sich unter Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config. Man sollte in der Lage sein herauszufinden, wo sich ihre pg_config befindet, indem lsman das Applications/Postgres.app/ContentsVerzeichnis durchsucht . Sehen Sie, ob Sie haben /Contents/MacOSoder /Contents/Versions...
Peterhurford
16

In meinem Fall (mit Postgres.app v9.3.4.2) schien es nur zu funktionieren, wenn die Flags der Umgebungsarchitektur vorangestellt wurden:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
Marius Butuc
quelle
Sie können die ARCHFLAGS in Ihr .bash_profile (oder ein gleichwertiges) einfügen, indem Sie einschließen export ARCHFLAGS="-arch x86_64". Ohne mich funktioniert PG nicht.
Peterhurford
Ich verwende Bundler und habe ein bisschen gebraucht, um herauszufinden, wie ich dies einem bundleBefehl hinzufügen kann . Sie können bundle config pg.build "...."mehr unter bundler.io/v1.3/man/bundle-config.1.html
Chad Gorshing
13

Da ich auf einem brandneuen Mac war, musste ich Folgendes tun:

  1. Installieren Sie die Xcode-Tools aus dem App Store
  2. Öffnen Sie die Xcode-Tools und akzeptieren Sie die Lizenz
  3. Führen Sie nun aus (hoffentlich ein zukunftssicherer Befehl):

    version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .

Wenn Sie Probleme haben, können Sie eine kleine Fehlerbehebung durchführen, indem Sie den tatsächlichen Fehler im mkmf.log überprüfen, den Sie durch Ausführen finden können (wenn Sie rvm verwenden):

cd ~/.rvm ; find . -name mkmf.log | grep pg
Louis Sayers
quelle
Dies ist der richtige Pfad für die neueste Version der Postgres App.
Michael Shimmins
Das - - ist wichtig, muss ein Fehler in pg sein.
BAR
6

Ich konnte pg mit diesem Befehl installieren

    gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Ich fand meinen Weg durch Laufen

    sudo find / -name "pg_config"

und ich habe pg-0.17.1 erfolgreich installiert

ylemp
quelle
Es ist einfacher , das zu finden pg_configDatei mit diesem Befehl, so müssen Sie alle Dateien auf Ihrem Computer nicht durchsuchen: Eine $ find /Applications/Postgres.app/ -name "pg_config" Durchsuchung /Library/würde auf Ihrem Computer arbeitet.
Powers
3

Das Hinzufügen des Postgress Bin-Verzeichnisses zum Pfad reicht ebenfalls aus. Fügen Sie einfach den Behälter wie folgt zum Pat hinzu. Bei den letzten Installationen stellt der neueste symbolische Link sicher, dass dieser Pfad für zukünftige Versions-Upgrades "stabil" ist.

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
koen
quelle
Vielen Dank, dass dies gut gem installfunktioniert hat:PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin gem install pg
Christoph Geschwind
2

Um dieses Problem zu beheben, habe ich Postgres mit Homebrew mithilfe der folgenden Anweisungen im Terminalfenster installiert:

brew install postgres

Homebrew finden Sie hier

http://brew.sh

Geoff Smith
quelle
4
Dies löst das Problem, bedeutet jedoch, dass nur für diese eine Header-Datei ein ganz anderes Postgres installiert wird.
Superluminary
5
Ja, tun Sie dies nicht, wenn Sie Postgres.app verwenden. In der Tat sollten Sie laufen, brew uninstall postgreswenn es da ist.
Peterhurford
1

Das hat bei mir funktioniert:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
quelle
1

Zum späteren Nachschlagen, da viele von uns neue Pfade für die neuen Versionsnummern veröffentlichen:

Derzeit bin weil ich einen Symlink genannt latestin /Applications/Postgres.app/Contents/Versions/.

Sie sollten in der Lage sein, einfach zu tun:

$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

Und vergessen Sie die Versionsnummer. Dies gilt möglicherweise nicht für jede (ältere) Version, aber ich selbst suchte nach einem Ausschnitt, den ich speichern und wiederverwenden konnte.

Gabriel Osorio
quelle