2013-03-08 12 views
7

Sto cercando di installare la gemma pg (PostreSQL) per Ruby. Sto ricevendo questo errore:installazione di pg gem fallisce dicendo che la versione è troppo vecchia?

postgres/9.2-pgdg/bin/64/pg_config 
Using config values from /location/to/install/postgres/9.2-pgdg/bin/64/pg_config 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for pg_config_manual.h... yes 
checking for PQconnectdb() in -lpq... yes 
checking for PQconnectionUsedPassword()... no 
Your PostgreSQL is too old. Either install an older version of this gem or upgrade your  database. 
*** 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. 

versione di PostgreSQL: postgres (PostgreSQL) 9.2.3

OS: Solaris 10

Ho anche provato:

gem install pg -- --with-pgsql-lib=/location/of/install/postgres/9.2-pgdg/lib/64/ --with-pg-config=/location/of/install/postgres/9.2-pgdg/bin/64/pg_config 

non ho idea perché questo errore si sta verificando e non riesco a trovare alcuna informazione utile su Google.

Qualsiasi aiuto è molto apprezzato.

+0

ho più versioni ma io indico la versione corretta anche in mkmf.log vedo lo stesso errore che fa riferimento al pQconnectionUsedPassword (). – arrowill12

+2

Potrebbe essere necessario impostare 'PATH' per assicurarsi che l'eseguibile' pg_config' corretto sia il primo nel 'PATH', e impostare qualsiasi' LD_LIBRARY_PATH' o ambiente equivalente Solaris vars per assicurarsi che venga trovato il 'libpq' giusto. –

+0

Cosa dice 'mkmf.log' nella sezione in cui viene verificata la presenza di' PQconnectionUsedPassword'? –

risposta

2

Un sacco di cose possono andare storto installando un client di database, il gioiello e usandolo.

Generalmente installo PostgreSQL dal sorgente, non da una distribuzione. A quel punto so di avere tutta la fonte e sapere esattamente dove sono state installate le cose. Questo è importante quando si installa la gem che parla con i driver client.

Mi affido anche all'installazione di Ruby dal sorgente, sia installandolo direttamente da me, sia utilizzando rbenv o RVM se si trova su una delle mie scatole di sviluppo. Quindi installo direttamente la gem di pg, usando gem install pg; Ho avuto troppe esperienze negative con le distro quando installo le lingue, quindi vado sulla vecchia scuola.

ho scritto un piccolo script che uso sui miei sistemi Mac OS, che ho trovato utile per le mie scatole CentOS Linux:

 
#!/bin/sh -x 

PATH=/Library/PostgreSQL/9.2/bin:$PATH 
gem install pg 

ho regolare l'aggiunta PATH a seconda di dove ha ottenuto installato PostgreSQL, ed è sembra fare il trucco. Ho usato anche le opzioni più lunghe e "complete", ma anche questo sembra funzionare.

Il problema è che il programma di installazione deve scavare le informazioni di installazione dall'eseguibile pg_config e riuscire a trovare pg_config fa il trucco.

+0

Funziona sempre. – pzin

0

Stavo impazzendo con questo fino a quando ho capito che postgresql-devel e postgresql-libs erano dal 8.1.23 !!!

$ yum list installed postgres* 
Loaded plugins: fastestmirror, security 
Installed Packages 
postgresql-devel.i386       8.1.23-10.el5_10      installed 
postgresql-devel.x86_64       8.1.23-10.el5_10      installed 
postgresql-libs.i386       8.1.23-10.el5_10      installed 
postgresql-libs.x86_64       8.1.23-10.el5_10      installed 

--------------- 

$ sudo yum install postgresql94-libs 
$ sudo yum install postgresql94-devel 

$ gem install pg 
Successfully installed pg-0.18.1 
0

installazione e il collegamento PostgreSQL da homebrew fisso per me:

brew install postgresql 
brew unlink postgresql91 
brew link --overwrite postgresql 
Problemi correlati