2013-11-26 22 views
63

Sto cercando di installare la gem di pg da utilizzare con Postgres.app sul mio computer locale. Sto gestendo Mavericks.Impossibile installare pg gem in Mavericks con Postgres.app

Postgres.app è installato e funziona bene, ma non riesco a far funzionare la gemma. Ho fatto quanto segue:

  1. usato l'ARCHFLAGS comando 'env = "- arch x86_64" gem install pg - with-PG-config =/Applications/Postgres.app/Contents/MacOS/bin/pg_config' dalla documentazione Postgres.app
  2. aggiornato Homebrew e installato l'Apple GCC 4.2
  3. installati gli strumenti di sviluppo Xcode
  4. aggiornato il mio $ PATH per fare riferimento sia al bidone Postgres.app e lib

Tutto senza successo. Ecco il messaggio di errore specifico che ricevo:

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}/ 

Apprezzerei qualsiasi aiuto tu possa offrire. Grazie!

+0

possibile duplicato di [Impossibile installare PG gem sul mio mac con Mavericks] (http://stackoverflow.com/questions/19625487/impossible-to-install-pg-gem-on-my-mac-with-mavericks) – zeantsoi

risposta

229

Probabilmente hai il percorso sbagliato per --with-pg-config, controlla se è effettivamente lì.

È possibile trovare il percorso corretto per pg_config con:

find /Applications -name pg_config 

Nell'ultima versione Postgres.app il percorso è:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config 
+0

Abbastanza imbarazzante, è così. Dopo l'aggiornamento all'ultima versione di Postgres.app il percorso è cambiato e non me ne sono accorto. Grazie! – blundin

+0

Questo era anche per me! –

+4

sweeeeeeeeeeeeeet –

2

Per risolvere questo problema ho installato postgres utilizzando homebrew utilizzando il seguente nella finestra del terminale:

brew install postgres 

Homebrew può essere trovato qui

http://brew.sh

+4

Questo risolve il problema, ma significa installare un intero altro postgres solo per quel file di intestazione. – superluminary

+5

Sì, non farlo se stai usando Postgres.app. In effetti, dovresti eseguire "brew uninstall postgres" se è lì. – peterhurford

13

Essere su un nuovo Mac, ecco cosa dovevo fare:

  1. Installare gli strumenti Xcode da App Store
  2. strumenti Aprire Xcode e accettare la licenza
  3. Ora eseguito (si spera un comando a prova di futuro):

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

In caso di problemi, è possibile risolvere un po 'verificando l'errore effettivo nel mkmf.log che potete trovare eseguendo (se si utilizza RVM):

cd ~/.rvm ; find . -name mkmf.log | grep pg 
+0

Questo è il percorso corretto per l'ultima versione di Postgres App. –

+0

Il - - è importante, deve essere un bug in pag. – BAR

+0

Grazie! questo funziona per me! :) –

16

Nel mio caso (eseguendo Postgres.app v9.3.4.2) è sembrato solo a lavorare quando anteponendo l'architettura dell'ambiente bandiere:

env ARCHFLAGS="-arch x86_64" gem install pg -- \ 
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
+0

Puoi mettere ARCHFLAGS nel tuo .bash_profile (o equivalente) includendo "export ARCHFLAGS =" - arch x86_64 "'. Per me, senza questo, PG non funziona. – peterhurford

+0

Sto usando bundler e mi ci è voluto un po 'per capire come aggiungere questo ad un comando 'bundle'. Puoi usare 'bundle config pg.build" .... "', vedere di più su http://bundler.io/v1.3/man/bundle-config.1.html –

5

sono stato in grado di installare pg con questo comando

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

ho trovato la mia strada eseguendo

sudo find/-name "pg_config" 

e ho installato con successo pg-0.17.1

+0

È più facile trovare il 'pg_config' file con questo comando, in modo da non dover cercare tra tutti i file sul tuo computer: '$ find /Applications/Postgres.app/ -name" pg_config "' La ricerca attraverso '/ Library /' potrebbe funzionare sul tuo computer. – Powers

1

Questo ha funzionato per me:

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

l'aggiunta della directory bin di post sul tracciato fa anche il trucco. basta aggiungere il cestino alla pacca come questo. con le installazioni recenti l'ultimo collegamento simbolico assicura che questo percorso sia "stabile" per gli aggiornamenti futuri della versione.

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin 
+0

Grazie, anteponendo questo a 'gem install' ha funzionato bene:' PATH = $ PATH: /Applications/Postgres.app/Contents/Versions/latest/bin gem install pg' –

0

Per riferimento futuro, dal momento che molti di noi stanno postando nuovi percorsi per i nuovi numeri di versione:

Attualmente sto vedendo un link simbolico chiamato latest in /Applications/Postgres.app/Contents/Versions/.

Si dovrebbe essere in grado di fare solo:

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

E dimenticare il numero di versione. Questo potrebbe non essere applicabile a tutte le versioni (più vecchie), ma io stesso stavo cercando un frammento che avrei potuto salvare e riutilizzare.

Problemi correlati