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.