Jak zainstalować klejnot pg PostgreSQL na Ubuntu?

292

Próbuję zainstalować klejnot pg PostgreSQL dla Ruby.

Wydałem następujące polecenie:

gem install pg

Zainstalowałem Ruby 1.9.2 przy użyciu RVM.

Powyższe polecenie pokazuje mi następujący błąd.

Błąd jest następujący:

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

Nie wiem jaki jest błąd ...

palani
źródło
1
apt install postgresql-server-dev-alldla Ubuntu 18.04.
Richard Peck

Odpowiedzi:

678

Musisz zainstalować pakiet dev postgreSQL z nagłówkiem PostgreSQL

sudo apt-get install libpq-dev
shingara
źródło
Zrobiłem to zgodnie z twoją sugestią ... uzyskaj następujące potrzeby Potrzebujesz 0B archiwów. Po rozpakowaniu 5378kB zostanie zwolnione. Czy chcesz kontynuować? [T / n /?] T Zapisywanie informacji o rozszerzonym stanie ... Gotowe (Czytanie bazy danych ... 166183 plików i katalogów aktualnie zainstalowanych.) Usuwanie żubra ... Usuwanie libnss3-dev ... Usuwanie libnspr4-dev ... Usuwanie libqt4-core ... Usuwanie libqt4-test ... Usuwanie libsqlite3-dev ... Przetwarzanie wyzwalaczy dla man-db ..
palani
3
Dla tych, którzy są naprawdę nowi w Ubuntu jako ja, ale naprawdę nowi korzystają sudo apt-get install aptitudenajpierw :)
Haris Krajina,
1
wypróbowałem wszystkie kombinacje. nawet po ponownej instalacji postgres i libpq. nie ma szczęścia .. wciąż ten sam problem
Krishnaprasad Varma
5
Dla dystrybucji o smaku Cent / RedHat pakiet, którego potrzebujesz, toyum install postgresql-devel
Kyril
1
Mam wrażenie, że może to nie działać dla niektórych osób z powodu ich wersji Ubuntu. Nie udaje mi się to 13.04 z Postgres 9.1
Rebs
40

Po przeczytaniu i rzucaniu się przez 2 dni i wypróbowaniu wielu rzeczy znalezionych w innych notatkach, następująca pojedyncza linia była dla mnie lekarstwem na Ubuntu Lucid 10.04 w połączeniu z niektórymi pakietami Maverick i RVM (ruby 1.9.2-p290, rvm 1.10.2) 1.8.15, szyny 3.0.1, postgres 8.4.10):

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

wynik:

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...  

{tak - wreszcie sukces} !! ! zauważ, że w wyniku uruchomienia pg_config brakuje elementu -lpq w zmiennej LIBS w mojej instalacji Ubuntu / Postresql !!

i dlaczego przejście z pq na pg w niektórych miejscach - mylące dla początkujących?

nadal nie rozumiem podwójnego zestawu - i - z (opcja, ale i tak jestem daleko poza moją głębią)

jdupont
źródło
2
„-” jest powszechnie używany do oddzielenia parametrów od pierwszego polecenia od drugiego, w tym przypadku skryptu konfiguracyjnego extmod
Timothy Meade
1
Dziękuję Ci. Twoje rozwiązanie było idealne.
Sid
wielkie dzięki za udostępnienie tego rozwiązania. utknąłem na tym przez jeden dzień. Cieszę się, że napotkałem ten post.
świst
30

Używam Ubuntu 12.10 i uruchamiam to polecenie:

apt-get install libpq-dev

pomógł mi - po tym uruchomiłem instalację klejnotów pg -v "0.14.1" i wszystko jest już w porządku

Xander
źródło
26

Musisz dodać pakiet

sudo apt-get install libpq-dev

zainstalować klejnot pg w RoR

Sartaj Singh Sisodiya
źródło
25

W Ubuntu działa to dla mnie, mam nadzieję, że ci pomogę:

sudo apt-get install libpq-dev

i

gem install pg  --   --with-pg-lib=/usr/lib 
Marcos Riveros
źródło
24

Instalacja libpq-dev nie działała dla mnie. Musiałem także zainstalować niezbędne do kompilacji

sudo apt-get install libpq-dev build-essential
philwhln
źródło
16

Proste rozwiązanie dla użytkowników ubuntu ...

Najpierw odinstaluj wszystkie pakiety postgres, a następnie uruchom te komendy ...

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

Następnie uruchom „instalację pakietu”. Wszystko będzie dobrze. Miłego dnia!

Maruf Hasan Bulbul
źródło
1
Jeśli ludzie są ciekawi, jak usunąć wszystkie pakiety postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (lub dowolna wersja postgres, którą masz).
Tommyixi,
9

Dla użytkowników .RVM będzie lepiej:

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

zadziałało dla mnie (po tym, jak zobaczyłem wersję jdupont)

vekozlov
źródło
7

Jeśli masz zainstalowany program libpq-dev i nadal masz ten problem, prawdopodobnie przyczyną są sprzeczne wersje libssl i przyjaciół OpenSSL - wersja systemu Ubuntu w / usr / lib (przeciwko której jest zbudowany libpq) i druga wersja RVM zainstalowana w $ HOME / .rvm / usr / lib (lub / usr / local / rvm / usr / lib, jeśli jest to instalacja systemowa). Możesz to sprawdzić, tymczasowo zmieniając nazwę $ HOME / .rvm / usr / lib i sprawdzając, czy działa program „gem install pg”.

Aby rozwiązać problem, należy przebudować RVM przy użyciu systemowych bibliotek OpenSSL (może być konieczne ręczne usunięcie libssl. * I libcrypto. * Z katalogu rvm / usr / lib):

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

To ostatecznie rozwiązało problem dla mnie na Ubunto 12.04.

Mike Blackwell
źródło
Dziękuję za tę odpowiedź! Im nowsza wersja Ubuntu i starsza wersja Ruby, tym bardziej prawdopodobne jest niedopasowanie OpenSSL.
mikeycgto
Nic poza tym nie działało! Dziękuję bardzo @ mike-blackwell. Prawie straciłem nadzieję, zanim przyszedłeś na ratunek.
varagrawal 20.04.17
5

To rozwiązało problem dla mnie na Ubuntu 12.04 po tym, jak wszystkie sugestie tutaj zawiodły.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql
olafurg
źródło
Moje rozwiązanie było prawie takie samo; Korzystam z rbenv i działało dla mnie: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Nie musiałem określać wersji.
Dan Tenenbaum,
3

Próbowałem skonfigurować projekt Railsowy w moim świeżo zainstalowanym Ubuntu 16.04. Podczas uruchamiania pakietu napotkałem ten sam problem. Bieganie

sudo apt-get install aptitude

śledzony przez

sudo apt-get install libpq-dev

Rozwiązałem to dla mnie.

bishal
źródło
3

Dla każdego, kto nadal ma problemy po wypróbowaniu wszystkich odpowiedzi na tej stronie, działały (w końcu):

sudo apt-get install libgmp3-dev
gem install pg

Było to po zrobieniu wszystkiego, co wspomniano na tej stronie.

postgresql 9.5.8
Ubuntu 16.10

strzelcy
źródło
Tego potrzebowałem na Ubuntu 18.04
Weston Ganger,
1

Miałem ten sam problem i wypróbowałem wiele różnych wariantów. Po kilku próbach udało mi się sudo gem install, ale nadal mam problem z zainstalowaniem go bez sudo.
W końcu znalazłem decyzję - ponowna instalacja rvm pomogła mi. Prawdopodobnie może zaoszczędzić czas komuś innemu.

RaskolnikOFF
źródło
1

Innym rozwiązaniem tego problemu jest instalacja PostgreSQL przy użyciu Homebrew / linuxbrew:

brew install postgresql

Z przyzwyczajenia nie lubię używać sudo, chyba że muszę.

Braden Mugg
źródło
Homebrew jest tylko dla komputerów Mac.
IIllllll
2
Widelec do systemu Linux.
echristopherson
Jeśli nie chcesz instalować pełnej wersji PostgreSQL, działało dla mnie:brew install libpq && brew link libpq --force
Andrew
1

Dla tych, którzy próbują zainstalować Redmine, tęskniłem sudo apt-get install ruby-all-dev po wypróbowaniu wszystkich powyższych.

Wystąpił błąd początkowy mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.

Matthieu
źródło
0

apt-get install ruby-dev pracował dla mnie.

ssss4world
źródło
0

Inną opcją jest użycie Homebrew, który działa w systemie Linux i macOS, aby zainstalować tylko obsługiwane biblioteki:

brew install libpq

następnie

brew link libpq --force

( --forceopcja jest wymagana, ponieważ powoduje konflikt ze wzorem Postgres).

Andrzej
źródło