Impossibile installare PG gem sul mio Mac con Mavericks


103

Sto provando ad installare pg gem per poter lavorare di nuovo con i miei progetti rails. Ma ottengo questo errore:

Creazione di estensioni native. Questa operazione potrebbe richiedere del tempo ... ERRORE: errore durante l'installazione di pg: ERRORE: impossibile creare l'estensione nativa gem.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

la compilazione fallisce, per favore riprova con --with-pg-config = / path / to / pg_config controllando libpq-fe.h ... no Impossibile trovare l'intestazione 'libpq-fe.h * extconf.rb non riuscito * Impossibile creare Makefile per qualche motivo, probabilmente per mancanza di librerie e / o intestazioni necessarie. Controlla il file mkmf.log per maggiori dettagli. Potresti avere bisogno di opzioni di configurazione.

Opzioni di configurazione fornite: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib - senza-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =. --curdir --ruby = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --with-pg_config --without-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} /

I file gem rimarranno installati in /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 per l'ispezione. Risultati registrati su /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Ho provato tutto ciò che ho trovato su StackOverflow ma ricevo ancora questo errore.

Se provo a installare postgresql usando brew ottengo il seguente avviso:

Attenzione: postgresql-9.2.4 è già installato, semplicemente non è collegato

Se provo a collegare

brew link postgresql Linking /usr/local/Cellar/postgresql/9.2.4 ... Attenzione: impossibile collegare postgresql. Scollegamento ...

Errore: impossibile collegamento simbolico al file: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 non è scrivibile. Dovresti modificare le sue autorizzazioni.

Aiuto per favore

NOTA: ho già installato gli strumenti della riga di comando per i mavericks.


Se disinstallo utilizzando homebrew e provo a eseguire di nuovo l'installazione, ottengo questo errore:

==> Download da http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

################################################ ################ 100,0%

==> Patching file di patch src / pl / plpython / Makefile file di patch contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> make install-world ==> Avvertenze

Build Notes

Se le build di PostgreSQL 9 non riescono e hai installato la versione 8.x, potresti dover rimuovere prima la versione precedente. Vedi:
https://github.com/mxcl/homebrew/issues/issue/2510

Crea / Aggiorna un database

Se questa è la tua prima installazione, crea un database con: initdb / usr / local / var / postgres -E utf8

Per migrare i dati esistenti da una versione principale precedente (precedente alla 9.2) di PostgreSQL, vedere:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Caricamento delle estensioni

Per impostazione predefinita, Homebrew crea tutte le estensioni Contrib disponibili. Per vedere un elenco di tutte le estensioni disponibili, dalla riga di comando di psql, eseguire:
SELECT * FROM pg_available_extensions;

Per caricare uno qualsiasi dei nomi di estensione, accedere al database desiderato ed eseguire: CREATE EXTENSION [nome estensione];

Ad esempio, per caricare l'estensione tablefunc nel database corrente, eseguire: CREATE EXTENSION tablefunc;

Per ulteriori informazioni sul comando CREATE EXTENSION, vedere:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Per ulteriori informazioni sulle estensioni, vedere:
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

Altro

Alcune macchine potrebbero richiedere il provisioning della memoria condivisa:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Quando si installa il gem di postgres, si consiglia di includere ARCHFLAGS: ARCHFLAGS = "- arch x86_64" gem install pg

Per installare gems senza sudo, vedere il wiki di Homebrew.

Per fare in modo che launchd avvii postgresql all'accesso: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Quindi per caricare postgresql ora: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Oppure , se non vuoi / hai bisogno di launchctl, puoi semplicemente eseguire: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Attenzione: impossibile collegare postgresql. Scollegamento in corso ... Errore: Il brew linkpassaggio non è stato completato con successo La formula creata, ma non è collegata in / usr / local Puoi riprovare usando `brew link postgresql '==> Riepilogo 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 file, 38M, costruito in 4,9 minuti


SOLUZIONE:

Eseguo questo comando per modificare i permessi della cartella:

sudo chown jeanosorio / usr / local / share / man / man7

Poi

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... 421 link simbolici creati

E infine:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Recupero: pg-0.17.0.gem (100%) Creazione di estensioni native. Questa operazione potrebbe richiedere del tempo ... pg-0.17.0 installato con successo

Risposte:


252

Se vuoi evitare di usare MacPorts, puoi scaricare l' app Postgres e posizionarla nella directory dell'applicazione.

Quindi, specifica la posizione del nuovo download pg_config:

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

Se riscontri problemi con le intestazioni mancanti, prova a specificare la includedirectory dell'app:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'

11
Solo una nota che puoi ancora utilizzare il bundler impostando una variabile env di configurazione:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42

8
Se stai usando Postgres 9.3 (ultimo a partire da oggi), puoi farlo: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb

L'utilizzo di Postgres93.app ha funzionato ma ha dovuto aggiungere il percorso bin alla variabile env PATH per l'installazione del bundle.
mkhatib

5
Ho dovuto farlo funzionare usando gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez

1
Grazie! stavo ricevendo Avviso: impossibile collegare postgresql. Scollegamento in corso ... Errore: impossibile collegamento simbolico al file: ... non è possibile scrivere. Dovresti modificare le sue autorizzazioni. E tutto è difettoso, dopo aver preparato install / link postgresql L'installazione va a: Linking /usr/local/Cellar/postgresql/9.3.4 ... che è nel mio caso una CARTELLA MOLTO CONFLITTIVA, scaricando pg e gem install usando risolve il problema GRAZIE !!!!!!
d1jhoni1b

74

Usa la birra per ottenere postgresql

brew install postgresql

Controlla di avere pg_config nel brew installato. Ho trovato il mio in

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Controlla tramite:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Una volta terminato, installa la pggemma con

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

2
ha funzionato per me dopo aver provato molte cose diverse. dovevo solo assicurarmi di utilizzare il numero di versione corretto (9.3.5_1 nel mio caso)!
HK

1
Usa ls /usr/local/Cellar/postgresql/9.*/bin/pg_configper trovare il percorso reale e combinatoenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen

Una descrizione un po 'più dettagliata di ciò che accade qui deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova

35

Non sono stato in grado di installare postgres tramite MacPorts. Invece, ho installato Postgress.app . e chiamato

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Nota: nelle versioni più recenti (almeno nella 9.3) il percorso è in realtà: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config


2
Funziona, ma nota che a volte Postgres.app è installato come Postgres <NN> .app dove NN è il numero di versione.
nimrodm

11

Se hai homebrew, digita semplicemente:

$ brew install postgresql


1
Questo ha funzionato per me: avevo PostgreSQL già installato, ma immagino di gem install pg
doverlo

10

Ecco un'altra alternativa nel caso in cui desideri utilizzare direttamente l'installer di postgresql. Ci sono un paio di cerchi da superare per cominciare dopo l'aggiornamento ai maverick. Ecco cosa ho fatto:

Installa prima gli strumenti della riga di comando xcode:

xcode-select --install

Scarica e installa l'ultima versione di PostgreSQL (9.3.1), nel mio caso ho usato solo l'installatore grafico. Ecco il collegamento alla pagina dei download:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Basta scegliere tutte le impostazioni predefinite che ti dà. Nel mio caso ha installato postgres nella seguente directory, se lo hai installato in una directory diversa, ricorda solo il percorso che hai scelto, perché ne avrai bisogno a breve.

/Library/PostgreSQL/9.3

Se ora provi ad installare l'ultimo pg gem (0.17.0) dovrai passare un paio di opzioni sulla riga di comando. Questo è quello che ho usato:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Se hai installato postgres in una posizione diversa, dovrai correggere il percorso del file pg_config.

Se si lamenta di un file "libpq.5.dylib" mancante durante il tentativo di installazione di pg gem, sarà necessario creare un collegamento simbolico che punti alla posizione effettiva di questo file. Postgres lo sta cercando nella tua directory / usr / local / lib / quindi crea un collegamento simbolico e reindirizzalo alla sua posizione effettiva. Nel mio caso ho dovuto correre:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Dopo averlo fatto, riprova a installare nuovamente la gemma e si spera che funzioni per te nello stesso modo in cui ha funzionato per me.


9

Per me, su Yosemite, non avevo bisogno di specificare il pg_configpercorso. Il seguente lo ha fatto.

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

Sembra che la bandiera dell'architettura sia la chiave.


5

Nel mio caso (avevo bisogno di PG 0.16.0 su Mavericks), ho installato postgresql tramite MacPorts

sudo port install postgresql90

e poi

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Per l'ultima versione è necessario detrarre -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Se hai installato Homebrew, non installare MacPort prima di aver letto della loro coesistenza


5

Metti ciò che manca --with-pg-confignel file di configurazione di Bundler: /Users/<your_user>/.bundle/configper semplificarti la vita.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Quindi corri di bundle installnuovo.


5

Per me va bene! (Postgres 93, mac ox 10.9.1) 1. scarica @ http://postgresapp.com/ e poi

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

4

Sono rimasto bloccato sulla mia installazione in bundle per 3 giorni. Ho provato tutto come aggiungere env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

Sono stato in grado di vedere che pg gem veniva installato dopo questo comando ma ancora non veniva installato dall'installazione del bundle, il che era un problema perché non sapevo cosa scrivere in Gemfile tranne gem 'pg'

La cosa che alla fine ha funzionato per me è stata scoprire che il mio pg_config era in /Library/PostgreSQL/9.3/bin/pg_config e per impostazione predefinita l'installazione del bundle Gemfile cerca in / usr / local / bin / pg_config

Ho appena eseguito il seguente comando e la magia è avvenuta. bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config


4

Nel mio caso non ha funzionato se non si specificano i flag dell'arco, OS X 10.10.3 e posterApp 9.4

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

3

Il modo più semplice per risolvere questo problema è stato utilizzare Postgres.app e impostare le mie variabili env in modo che funzioni gem install pg(invece di richiedere il --with-pg-configflag).

Utilizzando Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg

2

Questo è quello che ha funzionato per me:

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

2

Nel mio caso, ho disinstallato la versione installata tramite homebrew e sono passato a Postgres.app (v9.3.4.2 al momento della scrittura).

Sembrava funzionare solo quando si premevano i flag dell'architettura dell'ambiente e si specificava il percorso per pg_config. La tua distanza in miglia potrebbe variare, quindi questa risposta potrebbe aiutare con variazioni sulla pg_configposizione di.

Ecco il comando finale e completo che ha funzionato per me:

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

2

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config


questo ha funzionato anche per me con l'installazione in bundle in questo modo:ARCHFLAGS="-arch x86_64" bundle install
d4n3

1

Ho ricevuto lo stesso errore durante l'esecuzione dell'installazione del bundle relativa a pg gem (utilizzando Mac OS X Mavericks). Dopo ore di ricerca, ho trovato la soluzione. Ho installato postgres usando homebrew

brew install postgres

Dopo averlo installato, ho creato una nuova app rails utilizzando postgres. Ho corso

bundle install

inutilmente (ottenuto lo stesso errore della domanda). ero solito

which psql

per capire dove è stato installato il mio postgres, è tornato

/usr/local/bin/psql

prima di eseguire nuovamente l'installazione del bundle, ho dovuto modificare il percorso globale in build.pg eseguendo quanto segue

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

poi ho eseguito di nuovo l'installazione del bundle e voilà! Ho usato il postgres dove l'ha installato brew.


1

Su OS X Mavericks con l'ultima app Postgres, procedi come segue con i privilegi di sudo

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

1

Quello che ha funzionato per me su 10.9.3 con Xcode 5.1.1 era il seguente:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Avevo bisogno di pg 0.17.1


1

Per qualsiasi anima persa, c'è ancora questo problema senza risoluzione e ha brewinstallato ruby e postgres . Ecco i seguenti passaggi per assicurarti di:

  • Assicurati che la tua versione di rubynon sia stata installata con il --universalflag.
    • Questa era la cosa più difficile da capire, avevo --universalla radice finale del problema.
  • Assicurati di aver inizializzato postgresqlcorrettamente con i comandi initdbe createdb(cerca altrove i passaggi per farlo).
  • Assicurati che Xcode(Opzionale) e command line toolssia installato; sul terminale:
    • xcode-select --install
    • sudo xcodebuild -license (se Xcode è installato) oppure apri l'applicazione e accetta il contratto di licenza.
    • Riavvia il computer
  • which ruby, which geme which postgresdovrebbe mostrare /usr/local/bin/ruby, /usr/local/bin/geme /usr/local/bin/postgresrispettosamente.
  • Sul terminale esegui:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • o
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Assicurandomi che tutti questi passaggi siano soddisfatti, sono stato in grado di risolvere i seguenti errori:

    • ruby.h errore di intestazione
    • developer tools installed first errore

1

Prima di tutto trova la posizione di pg_config

sudo find / -name "pg_config" -print

La risposta è /Library/PostgreSQL/9.1/bin/pg_config nella mia configurazione (MAC Maverick)

Quindi prova a installare qualcosa come di seguito

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

se questo non funziona, prova a controllare in che modo hai installato postgresql

porta brew / mac / configurazione

quindi devi provare l'opzione pertinente allo stesso.

Grazie.

Ariete


0

Ero con lo stesso problema, questa era la soluzione che ho trovato.

Se esegui brew doctor, ti dirà che probabilmente hai installato qualcosa senza brew che ha modificato i permessi su alcune cartelle, e quindi, devi cambiare i permessi su quella cartella.

All'interno /usr/local/share/man, quello che puoi fare è quanto segue:

sudo chown [yourusername] man7

E poi:

brew link postgres

Spero che sia d'aiuto!


0

Allo stesso modo, dopo aver installato il "bundle update" di Mavericks, veniva generato un errore su pg gem, che viene utilizzato solo in produzione e non localmente.

Uso Brew per gestire i miei pacchetti e postgresql era già installato, ma ricevevo ancora l'errore "no pg_config".

La soluzione era semplicemente "brew disinstallare postgresql", quindi "brew install postgresql". Dopo di che sono stato immediatamente in grado di eseguire con successo 'aggiornamento bundle'


0
sudo su 

poi

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

lavorato il 10.10.2


0

Se dopo aver provato tutto qui non si installa ancora, prova ad aprire Xcode e ad accettare il contratto di licenza.


0

Per me, il messaggio di errore era simile a questo:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Come mostra il messaggio di errore, sta tentando di eseguire il comando / script "pg_config". Quindi aggiungilo al percorso ovunque si trovi la tua installazione di Postgres. Nel mio caso, ho fatto:

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

poi

bundle

Questo è tutto.


-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config

Una piccola spiegazione sarebbe carina, per evitare che questo vada perso nel diluvio delle altre 19 risposte.
Brad Koch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.