pg gem kann nicht installiert werden

217

Ich habe es versucht, gem install pgaber es scheint nicht zu funktionieren.

gem install pg gibt diesen Fehler

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=C:/Ruby/bin/ruby
        --with-pg
        --without-pg
        --with-pg-dir
        --without-pg-dir
        --with-pg-include
        --without-pg-include=${pg-dir}/include
        --with-pg-lib
        --without-pg-lib=${pg-dir}/lib
        --with-pg-config
        --without-pg-config
        --with-pg_config
        --without-pg_config


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out
Rohit
quelle
3
Wenn Sie auf einem Mac sind, folgen Sie diesem Tutorial: matthew.mceachen.us/blog/…
Noah W. Smith
1
@NatchiQ defekter Link?
0112
In meinem Fall wurde das Fehlerprotokoll libpqnicht gefunden, also habe ich installiertsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Antworten:

14

Hier beantwortet: pg gem kann unter Windows nicht installiert werden

Es gibt keine native Windows-Version der neuesten Version von pg (0.10.0), die gestern veröffentlicht wurde. Wenn Sie jedoch 0.9.0 installieren, sollten Binärdateien ohne Probleme installiert werden.

Nikita Barsukov
quelle
388

Ich hatte dieses Problem, das hat bei mir funktioniert:

Installieren Sie das Paket postgresql-devel. Dadurch wird das Problem behoben, dass pg_config fehlt.

sudo apt-get install libpq-dev
Devaroop
quelle
139
Arbeitete für mich von apt-get install libpq-dev. Danke für den Tipp.
Ryanmt
5
Bestätigung von der pg gem Wiki-Homepage : "Unter Ubuntu wird / usr / bin / pg_config vom libpq-dev-Paket bereitgestellt."
Mark Berry
17
Was ist mit Mac?
Fivell
23
@Fivell Spät zum Spiel mit der Antwort hier, aber wenn Sie Homebrew installiert haben, brew install postgresqlerhalten Sie die Pakete, die Sie benötigen.
Alex LaFroscia
19
@ Vivell versuchen brew install postgresqlauf Mac
Mahattam
91

Das Problem ist die Gem-Abhängigkeit. Stellen Sie daher vor der Installation von pg sicher, dass Sie "libpq-dev" installiert haben.

Ubuntu-Systeme:

sudo apt-get installiere libpq-dev

RHEL-Systeme:

yum install postgresql-devel

Mac:

brauen installieren postgresql

Mahattam
quelle
7
Die Antwort für Mac ist wahr. Es ist nur so, weil wir PostgreSQL nicht auf dem Computer installiert haben.
Hoang Le
Unter Centos 7 wurde yum install postgresql-develmein Fehler im Zusammenhang mit pg_config für die Installation von 'pg' .gem behoben. Übrigens habe ich mich für das gerade veröffentlichte PostgreSQL 10
Arthur
62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config

Flaviu
quelle
3
Dies half mir (auf Centos 6.2)
TuK
14
Arbeitete für mich unter OS X, aber mit Pfad zu /Applications/Postgres.app/Contents/MacOS/bin/pg_config (ich habe eine eigenständige Postgres.app)
Matt
10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config auf Yosemite mit Postgres App
Twmulloy
Hat funktioniert. Aber auf dem Mac war das Vorangehen mit env ARCHFLAGS="-arch x86_64"einem Game Changer für mich.
Janusz Lenar
2
Ich habe gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configfür OSX 10.12
Tim Krins
37

@ Winfield sagte es :

Das pg gem erfordert die postgresql - Client - Bibliotheken zu binden gegen. Dieser Fehler bedeutet normalerweise, dass Ihre Postgres-Bibliotheken nicht gefunden werden können. Entweder haben Sie sie nicht installiert oder Sie müssen sie möglicherweise --with-pg-dir=an Ihre Edelsteininstallation übergeben.

Darüber hinaus müssen Sie es nur --with-pg-config=installieren.

Auf einem Mac

Wenn Sie zufällig auch Postgres über das Website-Bundle auf dem Mac installiert haben, ist es irgendwo in der Nähe /Applications/Postgres.app/Contents/Versions/9.3/bin.

Entweder du gibst es an die Edelsteininstallation weiter:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Oder Sie stellen den PFAD richtig ein . Da dies möglicherweise zu viel ist, um den PFAD vorübergehend festzulegen:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/
Cregox
quelle
2
für bestimmte Version:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland
Im Inhaltsordner latestvon Postgres.app befindet sich ein Symlink-Ordner, der nützlich ist, falls 9.3 nicht mehr ausgeliefert wird. gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Stephen Silber
24

Ich hatte postgresql nicht installiert, also habe ich es einfach mit installiert

sudo apt-get install postgresql postgresql-server-dev-9.1

unter Ubuntu 12.04.

Dies löste es.


Aktualisieren:

Verwenden Sie die neueste Version:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3
Lasse Skindstad Ebert
quelle
Das Problem wurde für mich brew install postgresql
behoben
19

Das hat in meinem Fall funktioniert:

sudo apt-get install libpq-dev

Ich benutzte:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Schienen 4.2.1
Zainal
quelle
12

Wenn Sie Postgres.app auf einem Mac verwenden, können Sie dieses Problem ein für alle Mal wie folgt beheben:

Zuerst gem uninstall pg, dann bearbeiten ~/.bash_profileoder ~/.zshrcDatei oder gleichwertig und fügt:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Dann bundle installund gem install pgsollten beide wie erwartet funktionieren.

DuArme
quelle
Vielen Dank, es funktioniert auch mit Brew installiert PostgreSQL # PostgreSQL Bin Pfad Export PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Benoit
9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

Ersetzen Sie 9.1 für die auf Ihrem System installierte Version.

jstnno
quelle
1
Dies hat mir auf einem Mac geholfen. Weiß jemand, was der Standardpfad ist und wie man ihn ändert?
Steve
Funktioniert unter OS X Maveric
Marek Kirejczyk
5

Unter Mac OS (El Capitano). Sie können einfach verwenden:brew install postgresql

Jones Agyemang
quelle
1
Ja! Das war alles was ich brauchte! Installieren Sie auf sauberem OS X, keine Postgres.app
Lane Rettig
3

Für das pg-Gem müssen die postgresql-Clientbibliotheken gebunden werden. Dieser Fehler bedeutet normalerweise, dass Ihre Postgres-Bibliotheken nicht gefunden werden können. Entweder haben Sie sie nicht installiert, oder Sie müssen das --with-pg-dir = an Ihre Gem-Installation übergeben.

Winfield
quelle
3

Für Mac-Benutzer

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

Dies sollte den Trick tun

Ronak Jain
quelle
3

Verwenden Sie mit ARCHFlagge.

sudo env ARCHFLAGS="-arch x86_64" gem install pg

Dies hat das gleiche Problem behoben, das Sie haben.

Aman Chhabra
quelle
2

Ich hatte dieses Problem unter Linux Mint (Maya) 13 und habe es durch die Installation von postgresql und postgresql-server behoben:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1
SAIDI Belkacem
quelle
2

Unabhängig davon, welches Betriebssystem Sie ausführen, sehen Sie in der Protokolldatei des "Makefile"nach, was gerade passiert, anstatt blind Dinge zu installieren.

In meinem Fall, MAC OS, befindet sich die Protokolldatei hier:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

In den Protokollen wurde angegeben, dass die make-Datei aus folgenden Gründen nicht erstellt werden konnte:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

Im mkmf.log werden Sie feststellen, dass die erforderlichen Bibliotheken nicht gefunden werden konnten, um den Build abzuschließen.

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

Nach dem Ausführen "brew install postgresql"kann ich sehen, dass alle erforderlichen Bibliotheken vorhanden sind:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes
zee
quelle
2

Ich habe dieses nervige Problem mit PG seit Jahren erlebt. Ich habe diesen Kern erstellt, um zu helfen.

Der folgende Befehl funktioniert immer für mich.

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

Kern: https://gist.github.com/sharnie/5588340cf023fb177c8d

SharnieIvery
quelle
1

Ich musste dies unter CentOS 5.8 tun. Das Ausführen bundle installverursachte immer wieder Probleme, da ich es nicht zwingen konnte, eine bestimmte PG-Version zu verwenden.

Ich kann auch nicht yum erase postgresql postgresql-devel, wegen Abhängigkeitsproblemen (es würde PHP, http usw. entfernen)

Die Lösung? Mess $ PATH vorübergehend, um dem Update pgsql den Vorzug vor dem Standard zu geben:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

Grundsätzlich wird mit den obigen Befehlen /usr/pgsql-9.2/bin/pg_configvor dem in geschaut/usr/bin/pg_config

Christian
quelle
1

Wenn Sie jruby anstelle von ruby ​​verwenden, treten bei der Installation des pg gem ähnliche Probleme auf. Stattdessen müssen Sie den Adapter installieren:

gem 'activerecord-jdbcpostgresql-adapter'
Nuri
quelle
1

Auf dem Mac brew install postgresDANNbundle install

Yar HTUT
quelle
0

Gehen Sie einfach hierher, um zu sehen, ob Ihre pg-Version die Win32-Plattform unterstützt, und verwenden Sie dann diesen Befehl, um Folgendes zu installieren:

gem install pg -v 0.14.1 --platform = x86-mingw32

revskill
quelle