Wie installiere ich das pg gem von PostgreSQL unter Ubuntu?


292

Ich versuche, PostgreSQLs pg gem für Ruby zu installieren.

Ich habe den folgenden Befehl ausgegeben:

gem install pg

Ich habe Ruby 1.9.2 mit RVM installiert.

Der obige Befehl zeigt mir den folgenden Fehler.

Der Fehler ist:

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

Ich weiß nicht, was der Fehler ist ...


1
apt install postgresql-server-dev-allfür Ubuntu 18.04.
Richard Peck

Antworten:


678

Sie müssen das PostgreSQL-Entwicklungspaket mit dem Header von PostgreSQL installieren

sudo apt-get install libpq-dev

Ich habe das gemäß Ihrem Vorschlag getan ... Sie müssen die folgenden zwei Archive erhalten. Nach dem Auspacken werden 5378kB freigegeben. Möchtest du weiter machen? [J / n /?] J Erweiterte Statusinformationen schreiben ... Fertig (Datenbank lesen ... 166183 aktuell installierte Dateien und Verzeichnisse.) Bison entfernen ... libnss3-dev entfernen ... libnspr4-dev entfernen ... entfernen libqt4-core ... libqt4-test entfernen ... libsqlite3-dev entfernen ... Trigger für man-db verarbeiten ..
palani

3
Für diejenigen, die Ubuntu wirklich neu sind wie ich, aber zuerst wirklich neu verwenden sudo apt-get install aptitude:)
Haris Krajina

1
versuchte alle Arten von Kombinationen. auch nach der Neuinstallation von postgres und libpq. kein Glück .. immer noch das gleiche Problem
Krishnaprasad Varma

5
Für Distributionen mit Cent / RedHat-Geschmack ist das Paket, das Sie möchten,yum install postgresql-devel
Kyril

1
Ich habe das Gefühl, dass dies aufgrund ihrer Ubuntu-Versionen für einige Leute möglicherweise nicht funktioniert. Dies schlägt für mich am 13.04 mit Postgres 9.1
Rebs

40

Nachdem ich 2 Tage lang gelesen und herumgeschlagen und viele Dinge ausprobiert hatte, die in anderen Notizen zu finden waren, war die folgende einzelne Zeile für mich das Heilmittel für Ubuntu Lucid 10.04, gemischt mit einigen Maverick-Paketen und RVM (Ruby 1.9.2-p290, RVM 1.10.2 Rubygems) 1.8.15, Schienen 3.0.1, Postgres 8.4.10):

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

das Ergebnis:

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

{ja - endlich Erfolg} !! ! Beachten Sie, dass der Ausgabe von pg_config das Element -lpq in der LIBS-Variablen meiner Ubuntu / Postresql-Installation fehlt !!

und warum der Wechsel von pq zu pg an bestimmten Stellen - verwirrend für Neuling?

Das, was ich immer noch nicht verstehe, ist die doppelte Menge von - und - mit (Option, aber ich bin trotzdem weit über meine Tiefe hinaus


2
Das '-' wird üblicherweise verwendet, um die Parameter des ersten Befehls vom zweiten zu trennen, in diesem Fall des Konfigurationsskripts des extmod
Timothy Meade

1
Danke dir. Ihre Lösung war perfekt.
Sid

Vielen Dank für das Teilen dieser Lösung. war einen Tag lang dabei. Ich bin froh, dass ich auf diesen Beitrag gestoßen bin.
Whizcreed

30

Ich bin auf Ubuntu 12.10 und führe diesen Befehl aus:

apt-get install libpq-dev

hat mir geholfen - danach lief gem install pg -v "0.14.1" und jetzt alles gut



25

In Ubuntu funktioniert das bei mir, ich hoffe dir zu helfen:

sudo apt-get install libpq-dev

und

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

24

Die Installation von libpq-dev hat bei mir nicht funktioniert. Ich musste auch Build-Essential installieren

sudo apt-get install libpq-dev build-essential

16

Einfache Lösung für Ubuntu-Benutzer ...

Deinstallieren Sie zuerst alle Postgres-Pakete und führen Sie dann diese Befehle aus ...

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

Führen Sie dann "Bundle-Installation" aus. Alles wird gut. Haben Sie einen guten Tag!


1
Wenn die Leute neugierig sind, wie alle Postgres-Pakete entfernt werden sollen, sudo apt-get remove --purge postgresql postgresql-9.3 (oder eine beliebige Version von Postgres).
Tommyixi

9

Für .RVM-Benutzer ist es besser:

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

es hat bei mir funktioniert (nachdem ich die jdupont version gesehen habe)


7

Wenn Sie libpq-dev installiert haben und dieses Problem weiterhin haben, liegt dies wahrscheinlich an widersprüchlichen Versionen von libSSl und Freunden von OpenSSL - der Ubuntu-Systemversion in / usr / lib (gegen die libpq erstellt wurde) und einer zweiten Version von RVM, die in $ installiert ist HOME / .rvm / usr / lib (oder / usr / local / rvm / usr / lib, wenn es sich um eine Systeminstallation handelt). Sie können dies überprüfen, indem Sie $ HOME / .rvm / usr / lib vorübergehend umbenennen und prüfen, ob "gem install pg" funktioniert.

Um das Problem zu lösen, müssen Sie rvm mithilfe der OpenSSL-Systembibliotheken neu erstellen (möglicherweise müssen Sie libssl. * Und libcrypto. * Manuell aus dem Verzeichnis rvm / usr / lib entfernen):

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

Dies löste schließlich das Problem für mich unter Ubunto 12.04.


Vielen Dank für diese Antwort! Je neuer Ubuntu und je älter der Ruby-Build ist, desto wahrscheinlicher tritt eine OpenSSL-Nichtübereinstimmung auf.
Mikeycgto

Sonst hat nichts funktioniert! Vielen Dank @ mike-blackwell. Ich hatte die Hoffnung fast aufgegeben, bevor Sie zur Rettung kamen.
Varagrawal


5

Dies löste das Problem für mich unter Ubuntu 12.04, nachdem jeder Vorschlag hier fehlgeschlagen war.

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

Meine Lösung war fast dieselbe; Ich benutze rbenv und was für mich funktioniert hat war: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Ich musste keine Version angeben.
Dan Tenenbaum

3

Ich habe versucht, ein Rails-Projekt in meinem frisch installierten Ubuntu 16.04 einzurichten. Ich bin beim Ausführen des Bundles auf dasselbe Problem gestoßen. Laufen

sudo apt-get install aptitude

gefolgt von

sudo apt-get install libpq-dev

Hat es für mich gelöst.


3

Für alle, die nach dem Ausprobieren aller Antworten auf dieser Seite immer noch Probleme haben, hat Folgendes (endlich) funktioniert:

sudo apt-get install libgmp3-dev
gem install pg

Dies geschah, nachdem alles andere auf dieser Seite erwähnt wurde.

postgresql 9.5.8
Ubuntu 16.10


Dies war, was ich auf Ubuntu 18.04
Weston Ganger

1

Ich hatte das gleiche Problem und habe viele verschiedene Varianten ausprobiert. Nach einigen Versuchen wurde ich in der Lage sudo gem install, aber immer noch Probleme, es ohne Sudo zu installieren.
Schließlich fand ich eine Entscheidung - die Neuinstallation von rvm half mir. Wahrscheinlich kann es jemand anderem Zeit sparen.


1

Eine andere Lösung für dieses Problem ist die Installation von PostgreSQL mit Homebrew / linuxbrew:

brew install postgresql

Aus Gewohnheit benutze ich Sudo nicht gerne, es sei denn, ich muss.


Homebrew ist nur für Mac.
IIllIIll

2
Es gibt eine Linux-Gabel.
Echristopherson

Wenn Sie nicht das vollständige PostgreSQL installieren möchten, hat Folgendes für mich funktioniert:brew install libpq && brew link libpq --force
Andrew

1

Für diejenigen, die versuchen, Redmine zu installieren, habe ich es verpasst, sudo apt-get install ruby-all-devnachdem ich alle oben genannten Versuche unternommen habe .

Anfänglicher Fehler ist mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Eine andere Möglichkeit ist die Verwendung von Homebrew, das unter Linux und MacOS funktioniert, um nur die unterstützenden Bibliotheken zu installieren:

brew install libpq

dann

brew link libpq --force

(Die --forceOption ist erforderlich, da sie mit der Postgres-Formel in Konflikt steht.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.