Rails 3 - impossibile installare pg gem


98

Quando provo a eseguire bundle (bundle install), ottengo sempre

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
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
    --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=/Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Uso Mac OS X 10.6, la versione di PostgreSQL installato è la 9.1. Ho scoperto che il problema è in libpq-dev , come posso installarlo / risolverlo?


2
come hai installato postgres sul tuo mac?
shingara


programma di installazione on_click? Flink? o MacPort?
shingara

Ho provato a installarlo in questo modo:, sudo port install libpq-devma un altro problema - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. È terribile, ancora qualche problema ...
user984621

1
Vedere questa domanda: [qui] [1] [1]: stackoverflow.com/questions/10321189/...
banditKing

Risposte:


78

Come indicato nel registro degli errori, è necessario passare il percorso al file pg_config. Prova a installare la gemma usando:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Se non sei sicuro di dove sia il tuo pg_config e supponendo che tu sia su Linux o Mac, puoi eseguire il seguente comando:

which pg_config

Il tuo pg-config può trovarsi in posizioni diverse a seconda di come hai installato postgres.


Come nota, il pacchetto binario dal sito Postgres non contiene intestazioni di sviluppo o il pg_configprogramma.
tadman

3
Il pacchetto binario da qui: enterprisedb.com/products-services-training/pgdownload#osx certamente non contenere sia pg_config(per esempio, a /Library/PostgreSQL/9.1/bin/pg_configper 9.1.x) e le intestazioni di sviluppo. È quello che uso per testare la pggemma in fase di sviluppo.
Michael Granger

8
Non which pg_configsarebbe più veloce di find / -name pg_config?
Justin D.

Apportata una piccola modifica agli argomenti della riga di comando. Sostituire la versione con quella attuale dovrebbe funzionare correttamente. Ecco la mia riga di comando: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
Su OSX puoi anche usare brew per ottenere le intestazioni brew install libpqxxe tutto andrà bene.
Vetsin

99

se stai utilizzando Linux potresti essere interessato a cosa ha funzionato per me:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

Poi

gem install pg

poi

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
grazie, come nel mio caso - non è necessario eseguire bundle gem install pg
valk

21
Non adatto per OS X.
dfrankow

1
Ha funzionato per me da novembre 2013 con Ubuntu 13.04!
Starkers

perché questo ha così tanti voti positivi quando è chiaramente per il sistema operativo sbagliato?
sevenseacat

1
@sevenseacat indica chiaramente il sistema operativo su cui deve essere utilizzato. E chiaramente molte persone con sistemi operativi Linux stanno trovando questa risposta quando cercano questo problema.
EE33

57

Se stai utilizzando Postgress.app, vorrai accedere ai suoi strumenti da riga di comando . Inserisci la seguente riga nel tuo terminale o nel tuo profilo PATH :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgora dovrebbe funzionare. (Questo è ciò che ha funzionato per me.)

Nota Il percorso delle nuove versioni ha il seguente aspetto:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
Grazie mille! Ho passato mezz'ora a esaminare cose che non funzionavano e alla fine l'ho trovato sepolto quaggiù. : D
Peter Brown

1
Ottima soluzione che non richiede birra.
lucian303

7
Basta essere consapevoli che la patch Postgre.app è cambiata nella versione 93. ora è: /Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
Questo ha funzionato per me, anche se il mio cestino era in un posto molto diverso -> /Library/PostgreSQL/9.3/bin
Jeremiah

5
Questo è ora - a /Applications/Postgres.app/Contents/Versions/9.3/binpartire dalla 9.3.5 se stai usando Postgres.app
Ashley


12

Cerca libpq:

brew search libpq

Dovrebbe produrre libpqxx

Quindi prova a installarlo:

brew install libpqxx

8

Devi solo installare libpq-dev:

sudo apt-get install libpq-dev

Quindi la gemma dovrebbe installarsi bene.


8
Non adatto per OS X.
dfrankow

Nel mio caso solo questo ha aiutato. Grazie!
kovpack

7

Segui le istruzioni di post-installazione: http://postgresapp.com/documentation/configuration-ruby.html

Per installare pg gem, assicurati di aver impostato correttamente $ PATH (come specificato in http://postgresapp.com/documentation/cli-tools.html ), quindi esegui

sudo ARCHFLAGS="-arch x86_64" gem install pg

Consiglio vivamente di leggere entrambe le pagine. Li ho solo scremati e ho perso 1 ora della mia vita. Leggili, problema risolto.


Funziona su OSX 10.9.5, versione predefinita di ruby ​​2.0, versione locale di rbenv 1.9.3.
jlucasps

Funziona su OSX 10.11 GRAZIE
Yarin

Funziona su OSX 10.11.4. Grazie!!
Martyn Chamberlin

3

Il problema che ho avuto è stato che per qualche motivo stava cercando di compilare con /usr/bin/gcc-4.2. L'ho scoperto cambiando try_cpp in mkmf.rb (che ho visto nella traccia dello stack) per sollevare un'eccezione con la riga di compilazione che non funzionava.

Ho collegato in modo soft gcc a gcc-4.2 e ha funzionato:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Perché stava cercando di usare gcc-4.2? Nessuna idea.

L'attuale riga di compilazione:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

Ho avuto lo stesso problema ma il mio Postgres è stato installato

/Library/PostgreSQL/9.3

Aggiornato il ~ / .bash_profile aggiungendo:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Apri un nuovo terminale, esegui bundle updatee anche per me ha funzionato. Grazie Ari.


ma per lavorare è necessario controllare la versione quindi esportare PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

Puoi impostare un'opzione di configurazione della build bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_confige usarla gem install pgsenza alcuna opzione (il percorso di pg_config potrebbe essere diverso per te, questo è per Postgresapp 9.3.5.0)


1

Ho avuto lo stesso problema nella mia macchina KDE openSUSE13.1. Prima di quel problema ho riscontrato che avevo installato solo i pacchetti postgresqle postgresql-serverutilizzando il zyppercomando. Quindi installati di nuovo altri 2 pacchetti:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Poi, ho corso di nuovo bundle installe ho avuto successo !!!



0

Innanzitutto, disinstalla tutte le versioni di Homebrew. L'opzione --force consente di disinstallare tutte le versioni.

brew rm postgresql --force

Cambia i percorsi di conseguenza per la tua versione.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Modifica / etc / profile ed elimina tutte le righe che fanno riferimento a "postgres".

nano /etc/profile

Installa PostgresSQL

brew update
brew install postgresql

Installa de PG GEM

gem install pg

Questo è tutto. Saluti.


0

Puoi prima controllare per vedere se hai un file postrgresql nel tuo terminale andando al file lib. andando su cd ~ / opt / local / lib / e poi digita ls e il pulsante invio. Questo ti mostrerà un elenco di tutti i file che si trovano nella directory lib.

1.se non hai postreseql puoi scaricare tramite macports. sudo port install postgresql93 @ 9.3.2_1

Ora torna indietro nella tua cartella che stai tentando di installare in bundle

  1. far funzionare il tuo pg con il tuo file postgesql che hai o hai appena scaricato gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

ora esegui l'installazione del pacchetto



0

Ciò che ha funzionato per me su El Capitan è stato l'aggiornamento di ruby ​​dall'impostazione predefinita di sistema alla 2.3.1 che sembrava trovare le librerie corrette di cui la pggemma aveva bisogno.

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.