Come installare la gemma pg di PostgreSQL su Ubuntu?


292

Sto cercando di installare la gemma pg di PostgreSQL per Ruby.

Ho emesso il seguente comando:

gem install pg

Ho installato Ruby 1.9.2 usando RVM.

Il comando sopra mi mostra il seguente errore.

L'errore è:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)

*** 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=/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby
 --with-pg
 --without-pg
 --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}/lib
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

Non so quale sia l'errore ...


1
apt install postgresql-server-dev-allper Ubuntu 18.04.
Richard Peck,

Risposte:


678

È necessario installare il pacchetto di sviluppo postgreSQL con l'intestazione di PostgreSQL

sudo apt-get install libpq-dev

L'ho fatto secondo il tuo suggerimento ... per ottenere il seguente bisogno di ottenere 0B di archivi. Dopo il disimballaggio, verranno liberati 5378kB. Vuoi continuare? [Y / n /?] Y Scrittura di informazioni di stato estese ... Fine (Lettura database ... 166183 file e directory attualmente installati.) Rimozione bisonte ... Rimozione libnss3-dev ... Rimozione libnspr4-dev ... Rimozione libqt4-core ... Rimozione di libqt4-test ... Rimozione di libsqlite3-dev ... Elaborazione di trigger per man-db ..
palani

3
Per quelli davvero nuovi di Ubuntu come me, ma davvero nuovi sudo apt-get install aptitudeprima di tutto :)
Haris Krajina,

1
provato tutti i tipi di combinazioni. anche dopo aver reinstallato postgres e libpq. senza fortuna .. sempre lo stesso problema
Krishnaprasad Varma,

5
Per le distribuzioni al gusto di Cent / RedHat, il pacchetto che desideri èyum install postgresql-devel
Kyril

1
Ho la sensazione che questo potrebbe non funzionare per alcune persone a causa delle loro versioni di Ubuntu. Questo non riesce per me il 13.04 con Postgres 9.1
Rebs il

40

Dopo aver letto e girato per 2 giorni e aver provato molte cose trovate in altre note, la seguente riga singola è stata la cura per me su Ubuntu Lucid 10.04 mescolata con alcuni pacchetti Maverick e RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, rail 3.0.1, postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

il risultato:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{sì - finalmente successo} !! ! nota che l'output dell'esecuzione di pg_config manca dell'elemento -lpq nella variabile LIBS sulla mia installazione di Ubuntu / Postresql !!

e perché il passaggio da pq a pg in determinati luoghi - confondendo a principiante ??

la cosa che ancora non capisco è il doppio set di - e - con (opzione ma sono comunque ben oltre la mia profondità


2
il '-' è comunemente usato per separare i parametri dal primo comando dal secondo, in questo caso, lo script di configurazione del extmod
Timothy Meade

1
Grazie. La tua soluzione è stata perfetta
Sid,

grazie mille per aver condiviso questa soluzione. è rimasto bloccato per un giorno. felice di aver incontrato questo post.
accordato il

30

Sono su Ubuntu 12.10 e sto eseguendo questo comando:

apt-get install libpq-dev

mi ha aiutato - dopo aver eseguito gem install pg -v "0.14.1", e tutto bene ora



25

In Ubuntu questo funziona per me, spero di aiutarti:

sudo apt-get install libpq-dev

e

gem install pg  --   --with-pg-lib=/usr/lib 

24

L'installazione di libpq-dev non ha funzionato per me. Avevo anche bisogno di installare build-essential

sudo apt-get install libpq-dev build-essential

16

Soluzione semplice per utenti ubuntu ...

Disinstalla prima tutti i pacchetti postgres, quindi esegui questi comandi ...

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

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

Quindi eseguire 'bundle install'. Tutto andrà bene. Buona giornata!


1
Se le persone sono curiose di sapere come rimuovere tutti i pacchetti postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (o qualunque versione di postgres possiedi).
Tommyixi,

9

Per gli utenti .RVM sarà meglio:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

ha funzionato per me (dopo aver visto la versione di jdupont)


7

Se hai installato libpq-dev e stai ancora riscontrando questo problema, è probabilmente dovuto a versioni contrastanti di libssl e amici di OpenSSL: la versione del sistema Ubuntu in / usr / lib (contro cui è costruito libpq) e una seconda versione RVM installata in $ HOME / .rvm / usr / lib (o / usr / local / rvm / usr / lib se si tratta di un'installazione di sistema). Puoi verificarlo rinominando temporaneamente $ HOME / .rvm / usr / lib e vedendo se "gem install pg" funziona.

Per risolvere il problema, ricostruire rvm utilizzando le librerie OpenSSL di sistema (potrebbe essere necessario rimuovere manualmente libssl. * E libcrypto. * Dalla directory rvm / usr / lib):

rvm reinstall 1.9.3 --with-openssl-dir=/usr

Questo finalmente risolto il problema per me su Ubunto 12.04.


Grazie per questa risposta! Più recente è Ubuntu e più vecchia è la creazione di rubini, più è probabile che si verifichi una mancata corrispondenza di OpenSSL.
mikeycgto

Nient'altro ha funzionato tranne questo! Grazie mille @ mike-blackwell. Avevo quasi perso la speranza prima che tu venissi in soccorso.
varagrawal,


5

Ciò ha risolto il problema per me su Ubuntu 12.04 dopo che ogni suggerimento qui era fallito.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

La mia soluzione era quasi la stessa; Sto usando rbenv e quello che ha funzionato per me è stato: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Non avevo bisogno di specificare una versione.
Dan Tenenbaum,

3

Stavo cercando di installare un progetto Rails nel mio Ubuntu 16.04 appena installato. Ho riscontrato lo stesso problema durante l'esecuzione del bundle. In esecuzione

sudo apt-get install aptitude

seguito da

sudo apt-get install libpq-dev

Risolto per me.


3

Per chiunque abbia ancora problemi dopo aver provato tutte le risposte in questa pagina, il seguente (finalmente) ha funzionato:

sudo apt-get install libgmp3-dev
gem install pg

Questo dopo aver fatto tutto il resto menzionato in questa pagina.

postgresql 9.5.8
Ubuntu 16.10


Questo era ciò di cui avevo bisogno su Ubuntu 18.04
Weston Ganger,

1

Ho avuto lo stesso problema e ho provato molte varianti diverse. Dopo alcuni tentativi sono diventato in grado sudo gem install, ma ho ancora problemi a installarlo senza sudo.
Alla fine ho trovato una decisione: la reinstallazione di rvm mi ha aiutato. Probabilmente può far risparmiare tempo a qualcun altro.


1

Un'altra soluzione a questo problema è installare PostgreSQL usando Homebrew / linuxbrew:

brew install postgresql

Per abitudine non mi piace usare il sudo a meno che non sia necessario.


L'homebrew è solo per Mac.
IIll

2
C'è un fork di Linux.
ecristopherson,

Se non vuoi installare PostgreSQL completo, per me ha funzionato:brew install libpq && brew link libpq --force
Andrew

1

Per quelli che cercavano di installare Redmine, mi mancava sudo apt-get install ruby-all-dev dopo aver provato tutto quanto sopra.

Errore iniziale mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Un'altra opzione è utilizzare Homebrew che funziona su Linux e macOS per installare solo le librerie di supporto:

brew install libpq

poi

brew link libpq --force

(l' --forceopzione è obbligatoria perché è in conflitto con la formula di postgres.)

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.