Installazione di PG gem su OS X - impossibile creare l'estensione nativa


183

Sembra che molti altri abbiano avuto problemi con l'installazione della gemma pg. Nessuna delle soluzioni proposte per gli altri ha funzionato per me.

Ho provato ad installare la gemma pg e postgres.app. La gemma PG non verrà installata. Il primo errore che ottengo è:

Si è verificato un errore durante l'installazione di pg (0.17.0) e Bundler non può continuare. Assicurati che abbia gem install pg -v '0.17.0'successo prima di raggruppare.

Il consiglio di installazione su come indirizzare my gem install alla configurazione per pg fallisce con il seguente messaggio di errore (che molti altri su questo forum hanno riscontrato):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Non so come trovare o accedere a questo file di registro per cercare ulteriori indizi.

Ricevo anche un messaggio di errore (comando non trovato) quando provo ad usare il comando sudo apt-get install. Ho analizzato questo forum nelle ultime 6 ore, provando ogni consiglio per far funzionare PG con il mio progetto Rails.

Non riesco a trovare consigli su come modificare un percorso o, in particolare, quale modifica è richiesta. Il mio which pg_configrestituisce una fonte di file. L'ho usato con un comando per installare pg usando quella configurazione. Fallisce.

Ci sono così tante persone che hanno avuto problemi con questo. Molte risposte suggeriscono l'homebrew. Ho dovuto rimuoverlo perché ha sollevato altri problemi.


1
Ehi, un paio di domande che ti aiuteranno: - Sei su Mac, giusto? Giusto è andato storto con l'homebrew? (ps, come hai notato, apt-get è solo per Ubuntu (e i suoi cugini basati su Debian)) - che versione di Postgres hai? prova a correre psql -vnella tua shell. - che versione di ruby ​​stai eseguendo? Sembra 1.9.3, ma cosa ruby -vti dà?
rmosolgo,

Vorrei aggiungere che il mio psql è aggiunto in: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; Uscita; psql (9.3.0) ma quale psql restituisce: usr / bin / psql
Mel

Ciao, grazie mille per aver guardato questo. Il mio psql è v 9.3.0 e ruby ​​è v 1.9.3
Mel

1
Vedi la risposta di @ paninapress per Postgres.app. Ha funzionato benissimo per me e non richiede l'installazione di un'altra istanza di Postgres.
Jamon Holmgren,

Risposte:


442

Lo stesso errore per me e non l'ho provato fino a quando non ho scaricato OS X 10.9 (Mavericks). Sospiro, un altro mal di testa di aggiornamento del sistema operativo.

Ecco come l'ho risolto (con homebrew):

  • Installa un'altra build di Xcode Tools (digitando brew updatenel terminale ti verrà chiesto di aggiornare gli strumenti di build di Xcode)
  • brew update
  • brew install postgresql

Dopo quello ha gem install pgfunzionato per me.


7
Dopo due giorni di mal di testa che cercavano di correggere il mio db Rails dopo l'aggiornamento di Mavericks, questo mi ha risolto molte grazie.
Deborah,

4
Questo ha funzionato anche per me - su una nuova installazione Mavericks. Grazie!
marcamillion,

1
Grazie per avermi salvato la salute mentale!
Jim,

1
Ancora lavorando. Project è su Ruby 2.2.0 per supportare un'app vecchia, ma lo stesso GRAZIE.
TristanZimmerman,

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal,

223

Se stai usando Ubuntu prova a installare il seguente file lib

sudo apt-get install libpq-dev

e poi

gem install pg

ha funzionato per me.


4
Ha funzionato anche per me. Sto usando Ubuntu 13.10.
rafaelkin,

4
Assicurati di digitarlo correttamente. Non è libpg-dev; È una Q non una P! Mi ci sono voluti 10 minuti per capirlo nel modo più duro.
tir38,

1
Per Amazon Linux èyum install postgres-devel
andrewtweber il

1
Ha funzionato per me su Ubuntu 14 !!
18byte,

6
Per CentOSyum install postgresql-devel
septerr

49

Sto usando OS X Mavericks (versione 10.9)

e quando eseguo quanto sopra ho ricevuto il seguente messaggio: Se le build di PostgreSQL 9 falliscono e hai installato la versione 8.x.

Quindi eseguo il seguente comando:

ARCHFLAGS="-arch x86_64" gem install pg

e questo ha funzionato per me, spero che questo aiuti qualcuno :)


2
+1, ne ho provati altri, ma finalmente ho installato pg gem con questa soluzione.
BMW,

1
+1, allo stesso modo, questa era la soluzione anche per me, dove il mio postgresql era già installato tramite brew. Grazie Jon per il post.
Jason Hoekstra il

5
nb Se si installa come root (per qualsiasi motivo), sudo va prima della variabile:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman

In realtà, ho bisogno di questo ogni volta che corro, bundle installquindi l'ho inserito ~/.bash_profilecome esportazione :)
Ja͢ck,

42

Ok ho avuto anche questo problema (psql è v 9.3.0 e ruby ​​è v 2.1.2) e la soluzione che ha funzionato per me è stata l'impostazione delle impostazioni di configurazione del bundle prima:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Questa risposta finalmente mi ha aiutato a capirlo: https://stackoverflow.com/a/9235107/3546680


6
Questo metodo è preferito se usi postgres.app. Utilizzando Homebrew potrebbe risolvere il problema estensione nativa, ma avere due applicazioni Postgres creeranno conflitti (come l'allocazione delle porte) Si veda anche la risposta Sayanees' a stackoverflow.com/questions/19569031/...
epigene

4
Questa è sicuramente la risposta giusta per Postgres.app.
Jamon Holmgren,

Funziona bene su Mojave, provato con successo pochi minuti fa.
microspino,

23

Ho provato tutto per ore, ma alla fine è stato risolto il problema (sono su OS X 10.9.4):

  1. Installa gli strumenti da riga di comando Xcode (sito per sviluppatori Apple)
  2. brew disinstalla postgresql
  3. brew install postgresql
  4. ARCHFLAGS = "- arch x86_64" gem install pag

Grazie. Ho usato sudo per il passaggio 4, è una brutta cosa? Come posso evitarlo?
Roy,

@Roy - felice di aiutarti :) - dovrebbe andare bene, probabilmente voglio evitare di usare sudo poiché credo che lo installerà per tutti gli utenti, ma se sei l'unico utente sul sistema di quello che probabilmente non è un grosso problema .
Ali Yazdani,

brew uninstall postgresqle brew install postgresqlnon sono necessari passaggi su OS X 10.10 e 10.11. Basta gem uninstall pg(e rimuovere tutte le versioni), quindi assicurarsi bundleo gem install pgdi nuovo, e le estensioni native saranno ricostruite con i nuovi strumenti della riga di comando per questa versione OS X.
Olivier Lacan,


6

Allo stesso modo, dopo aver installato Mavericks bundle update stava lanciando un errore sulla gemma pg, che viene utilizzata solo in produzione e non localmente.

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

La soluzione era solo brew uninstall postgresqlallora brew install postgresql. Dopo di che sono stato immediatamente in grado di eseguire correttamente bundle update.


6

Credo che la risposta "corretta" sarebbe prima configurare PATH correttamente per Postgres.app aggiungendo quanto segue ~/.profile( .zshrco ~/.zprofilese si utilizza ZSH):

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

Quindi apri una nuova scheda o finestra nel terminale e installa la pggemma con:

ARCHFLAGS="-arch x86_64" gem install pg

Documentato qui:


5

Su OSX con Postgres installato in / Applicazioni, eseguo semplicemente il seguente comando (cambio 0.20 e 9.4 in base alla tua versione)

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

Avresti dovuto :

Creazione di estensioni native con: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Questo potrebbe richiedere del tempo ... Installazione correttamente pg-0.20.


Puoi spiegare perché abbiamo dovuto usare il trattino 2 in più prima che l'argomento sia effettivamente fornito?
Akash Agarwal,

3

Ho trascorso una giornata su questo ed ecco come l'ho risolto:

Ho scoperto che il valore globale di build.pg era impostato su: /opt/local/lib/postgresql91/bin/pg_config e che non era dove Postgres era installato.

L'ho risolto sostituendo il valore di build.pg in: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config dov'è la mia installazione di postgresql.


1

Provare:

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

0

Risolto! Ho riscontrato una mancanza di libreria per PostgreSQL sul sistema. Solo due passaggi l'hanno risolto:

brew install postgresql

Quindi corri

gem install pg


0

Per coloro che non sono interessati a utilizzare brew.

  1. Scarica PostgreSQL applicazione.
  2. Segui le istruzioni predefinite di macOS per installarlo.
  3. Si consiglia di eseguire PostgreSQl.
  4. Esegui gem install pg -- --with-pg-config=/ path / to / postgress / in / your / applicazioni / cartella / `
    • Ad esempio, nella mia macchina lo è /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
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.