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

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:



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

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


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


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/

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

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

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.


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.


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


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.


3

Für Mac-Benutzer

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

Dies sollte den Trick tun


3

Verwenden Sie mit ARCHFlagge.

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

Dies hat das gleiche Problem behoben, das Sie haben.


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

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

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


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


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'


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

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.