Ich verwende die Ruby on Rails 3.1-Vorversion. Ich benutze gerne PostgreSQL, aber das Problem ist die Installation des pg
Edelsteins. Es gibt mir den folgenden Fehler:
$ gem install pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/home/u/.rvm/rubies/ruby-1.9.2-p0/bin/ruby 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=/home/u/.rvm/rubies/ruby-1.9.2-p0/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 /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out
Wie löse ich dieses Problem?
ruby-on-rails
ruby-on-rails-3
postgresql
rails-postgresql
pg
Dämonchand
quelle
quelle
Antworten:
Es sieht so aus, als ob in Ubuntu der Header Teil des
libpq-dev
Pakets ist (zumindest in den folgenden Ubuntu-Versionen: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 (Trusty Tahr) und 18.04 (Bionic Beaver)):Versuchen Sie also, es
libpq-dev
oder ein gleichwertiges Programm für Ihr Betriebssystem zu installieren :sudo apt-get install libpq-dev
yum install postgresql-devel
brew install postgresql
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
zypper in postgresql-devel
pacman -S postgresql-libs
quelle
durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$ gem install libpq-dev ERROR: Could not find a valid gem 'libpq-dev' (>= 0) in any repository durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$
apt-get install postgres-server-dev-{pg.version}
einzuschließen. Ihre Antwort funktioniert nicht mehr mit postgresql 9.4 unter Ubuntu 14.04. Siehe: stackoverflow.com/a/28837453/75194Verwenden Sie unter macOS (früher Mac OS X und OS X ) Homebrew , um die richtigen Header zu installieren:
und dann rennen
sollte arbeiten.
Anstatt das Ganze zu installieren
postgresql
, können Sie alternativbrew install libpq
das richtigePATH
undPKG_CONFIG_PATH
wie im Abschnitt "Vorsichtsmaßnahmen" erläuterte exportierenquelle
brew install postgressql
ichARCHFLAGS="-arch x86_64" gem install pg
und funktioniert gut.brew install libpqxx
auf Mac OSX zu laufenlibpqxx
installiertpostgresql
, daher ist es im Wesentlichen dasselbe wiebrew install postgresql
postgresql
, können Siebrew install libpq
das richtigePATH
undPKG_CONFIG_PATH
wie im Abschnitt "Vorsichtsmaßnahmen" erläuterte exportieren .Ich hatte es auch versucht
gem install libpq-dev
, aber ich erhielt diesen Fehler:Ich fand jedoch, dass die Installation mit
sudo apt-get
(was ich versuche, die Verwendung mit Ruby on Rails zu vermeiden) funktionierte, dhdann konnte ich tun
ohne Probleme.
quelle
libpq-dev
-Paket geliefert werden.Ich könnte das auf andere Weise lösen. Ich habe die Bibliothek auf meinem System nicht gefunden. Daher habe ich es mit einer App von der PostgreSQL-Hauptwebsite installiert. In meinem Fall (OS X) fand ich die Datei unter,
/Library/PostgreSQL/9.1/include/
sobald die Installation beendet war. Abhängig von Ihrem System können Sie die Datei auch an einem anderen Ort haben, wenn Sie PostgreSQL bereits installiert haben.Dank dieses Links zum Hinzufügen eines zusätzlichen Pfads für die Gem-Installation konnte ich den Gem mit diesem Befehl auf die Bibliothek verweisen:
Danach funktioniert es, weil es jetzt weiß, wo die fehlende Bibliothek zu finden ist. Ersetzen Sie einfach den Pfad durch den richtigen Speicherort für Ihre libpq-fe.h.
quelle
export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
pg_*
Skripte wie folgt mit $ PATH verknüpft habe :ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Ich habe Postgres 9.3 wie folgt installiert:yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm && yum install postgresql93 postgresql93-contrib postgresql93-server postgresql93-devel
gem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
export CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config"
. Diepg_config
ausführbare Datei wird aufgerufen, um alle erforderlichen Compiler- und Linkeroptionen abzurufen. Sie können sie selbst ausführen, um sie anzuzeigen.Ich hatte Erfolg unter CentOS 7.0.1406 mit den folgenden Befehlen:
Alternativ können Sie den Bundler so konfigurieren, dass er immer
pg
mit diesen Optionen installiert wird (hilfreich für die Ausführung des Bundlers in Bereitstellungsumgebungen).bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
quelle
Für CentOS 6.4
gut gearbeitet!
quelle
sudo port install postgresql-devel
.Nur für das Protokoll:
Ruby on Rails 4-Anwendung in OS X mit PostgresApp (in diesem Fall Version 0.17.1 erforderlich - eine Art altes Projekt):
quelle
/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
Unter Mac OS X laufen Sie wie folgt ab:
***/path/to/pg_config***
ist der Pfad zu pg_configquelle
sudo find / -name "pg_config"
und danngem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_config
den Pfad verwenden, den ich gerade herausgefunden habe.In meinem Fall war es ein Paket
postgresql-server-dev-8.4
(ich bin auf Ubuntu 11.04 (Natty Narwhal), 64 Bit).quelle
Die richtige Antwort für Mac-Benutzer mit Postgres.app besteht darin, gegen das
libpq
mit diesem Paket bereitgestellte zu bauen . Mit der Version 9.4 (zum jetzigen Zeitpunkt aktuell) benötigen Sie lediglich Folgendes:Dadurch bleibt Ihr
pg
Juwel mit genau der Version von PostgreSQL synchron, die Sie installiert haben. In diesem Fall ist es eine Verschwendung, etwas von Homebrew zu installieren.quelle
Ich hatte das gleiche Problem unter Amazon Linux. Ich konnte den Header finden
libpq-fe.h
, aber irgendwie hat es nicht funktioniert.Es stammte aus den verschiedenen Versionen der Pakete, die von den verschiedenen Benutzern auf dem Computer installiert wurden. PostgreSQL 9.2 und PostgreSQL 9.3 wurden installiert. Stellen Sie also sicher, dass Sie Ihre PostgreSQL-Version haben, bevor Sie die Bibliotheken einschließen.
Für mich war die magische Kommandozeile:
Quelle: Eine fast idiotische Anleitung zur Installation von PostgreSQL 9.3, PostGIS 2.1 und pgRouting mit Yum
quelle
Eine allgemeinere Antwort für jede Debian-basierte Distribution (einschließlich Ubuntu) lautet wie folgt. Installieren Sie zunächst das
apt-file
Paket, das als root ausgeführt wird:Auf diese Weise können Sie nach Paketen suchen, die eine Datei enthalten. Aktualisieren Sie dann die Datenbank mit
(Dies kann als normaler Benutzer ausgeführt werden). Suchen Sie dann nach dem fehlenden Header mit:
Auf meinem Computer gibt dies:
Los geht's!
quelle
Für MacOS ohne Installation des PostgreSQL-Servers:
quelle
Auf einem Mac habe ich es mit folgendem Code gelöst:
quelle
Ich verwende Postgres.app auf einem Mac und musste
zuerst. Dann
arbeitete für mich.
quelle
Ich hatte das gleiche Problem unter Mac OS, aber ich habe das PostgreSQL-Juwel einfach installiert, indem ich Folgendes in einem Terminal verwendet habe:
(Ich habe PostgreSQL zuerst mit installiert
brew install postgresql
.)quelle
Ich fand diese Antwort und es war die einzige, die für mich (Mac OS) funktionierte - nachdem ich ungefähr zwei Tage lang recherchiert hatte:
Siehe Frage zum Stapelüberlauf . Die PostgreSQL-Clientbibliothek (libpq) kann nicht gefunden werden .
quelle
Ich habe kürzlich ein Upgrade auf Mac OS X 10.10 (Yosemite) durchgeführt und hatte Schwierigkeiten, das
pg
Juwel zu erstellen .Der gemeldete Fehler war der typische:
Meine Lösung war,
gem uninstall pg
und dannbundle update pg
den Stein mit dem neuesten zu ersetzen. Ich habebrew update; brew upgrade
nach der Yosemite-Installation ausgeführt, um die neuesten Versionen von Paketen zu erhalten, die ich zuvor installiert hatte.quelle
Installieren Sie unter Ubuntu "libpq-dev", um dieses Problem zu beheben.
quelle
sudo apt-get install postgresql
vorlibpq-dev
Unter CentOS habe ich
libpq-dev package
mit dem folgenden Befehl installiertDie Ausführung
gem install pg
gab den gleichen Fehler wie "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config
" zurück.Die Installation des Edelsteins wie unten hat mein Problem gelöst
quelle
Unter FreeBSD (9.1) ist das erforderliche Paket / usr / ports / database / postgresql-server *. Bei der Installation wird auch die erforderliche Header-Datei installiert, wodurch die Gem-Installation von "pg" fehlschlägt. Diese Antwort hier hat mir geholfen, die Lösung zu finden, aber der Unterschied in den Paketnamen erforderte ein wenig Suche.
Hoffentlich hilft dies jemandem, ein bisschen Kopfkratzen zu vermeiden, wenn er auf einem FreeBSD-System nach dem "-dev" -Paket sucht!
quelle
Führen Sie unter Debian 7.0, 64-Bit (Wheezy) einfach Folgendes aus:
Führen Sie nach der erfolgreichen Installation von libpq-dev Folgendes aus:
quelle
Unter CentOS 6.5 (Squeeze) habe ich eine Datei erstellt:
mit Inhalt:
Beachten Sie hier, dass Sie Ihren PostgreSQL-Pfad mit der Datei pg_config festlegen sollten. Sie finden dies mit dem Befehl:
Speicher die Datei:
und versuchen Sie erneut, Ihren Befehl auszuführen.
Hinweis: Jedes Mal, wenn Sie die Bash- Konfiguration ändern - die profile.d-Konfiguration ändern - sollten Sie Bash neu laden.
quelle
pg_*
Skripte wie folgt mit dem Pfad verknüpft :ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Danach brauchte ich keine zusätzlichen Skripte oder Umgebungsvariablen.Der Speicherort
libpq-fe.h
hängt davon ab, wo sich Ihre PostgreSQL-Installation befindet (was davon abhängt, wie Sie sie installiert haben). Verwenden Sielocate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ), um dielibpq-fe.h
Datei auf Ihrem Computer zu finden. Wenn es existiert, befindet es sich iminclude
Verzeichnis Ihrer PostgreSQL-Installation.Das
bin
Verzeichnis, das enthältpg_config
, befindet sich im selben Verzeichnis wie dasinclude
Verzeichnis. Verwenden Sie, wie der Fehler andeutet, die Option --with-pg-config, um das Juwel zu installieren:Beachten Sie, dass Sie möglicherweise ausgeführt werden müssen,
updatedb
wenn Sielocate
PostgreSQL noch nie verwendet haben oder wenn Sie es seit der Installation von PostgreSQL nicht mehr aktualisiert haben.quelle
--
vorher--with-pg-config=...
erhalte ich eine Fehlermeldung: FEHLER: Während der Ausführung von gem ... (OptionParser :: InvalidOption) ungültige Option: --with-pg-config = / usr / bin / pg_config)Ich habe dieses Problem endlich gelöst, aber nicht mit den zuvor beschriebenen Methoden.
Mit
brew install postgresql
finde ich heraus, dass es bereits installiert, aber nicht verknüpft war.Finden Sie heraus, wo PostgreSQL installiert ist, und löschen Sie es.
Dann
brew install postgresql
wieder,brew link postgresql
gem install pg
quelle
Ich hatte dies gerade auf OSX mit Brew und
[email protected]
.Mein Fix war folgender:
quelle
Ich hatte dieses Problem mit Postgresql 9.6. Ich konnte es beheben, indem ich Folgendes tat:
quelle
Ich habe den gleichen Fehler bei Postgres festgestellt, die über asdf installiert wurden. Die pg-config-Lösungen haben bei mir nicht funktioniert. Stattdessen musste ich den Postgres-Include-Ordner suchen, der die Datei enthält, und den Befehl mit dem
--with-pg-include
Flag ausführenquelle
Für
AltLinux
das Paket musspostgresqlx.x-devel
(in meinem Fallpostgresql9.5-devel
) Folgendes installiert sein:quelle
Ich habe dieses Problem gelöst, indem ich das Paket 'postgresql-common' installiert habe. Dieses Paket enthält die
pg_config
Binärdatei, die höchstwahrscheinlich fehlt.quelle