Mit Mavericks kann PG gem nicht auf meinem Mac installiert werden


103

Ich versuche das pg gem zu installieren, um wieder mit meinen Rails-Projekten zu arbeiten. Aber ich bekomme diesen Fehler:

Native Erweiterungen erstellen. Dies kann eine Weile dauern ... FEHLER: Fehler beim Installieren von pg: FEHLER: Fehler beim Erstellen der nativen Gem-Erweiterung.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

Das Erstellen schlägt fehl. Bitte versuchen Sie es erneut mit --with-pg-config = / path / to / pg_config und prüfen Sie, ob libpq-fe.h ... nein. Der Header 'libpq-fe.h * kann nicht gefunden werden. Makefile konnte aus irgendeinem Grund nicht erstellt werden, wahrscheinlich fehlen die erforderlichen Bibliotheken und / oder Header. Überprüfen Sie die Datei mkmf.log auf weitere Details. Möglicherweise benötigen Sie Konfigurationsoptionen.

Bereitgestellte Konfigurationsoptionen: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib - ohne-opt-lib = $ {opt-dir} / lib - mit-make-prog - ohne-make-prog --srcdir =. --curdir --ruby = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --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} /

Gem-Dateien bleiben zur Überprüfung in /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 installiert. Ergebnisse protokolliert unter /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Ich habe alles versucht, was ich bei stackoverflow gefunden habe, aber ich erhalte immer noch diesen Fehler.

Wenn ich versuche, postgresql mit Brew zu installieren, erhalte ich folgende Warnung:

Warnung: postgresql-9.2.4 ist bereits installiert, es ist nur nicht verknüpft

Wenn ich versuche zu verlinken

Brew Link Postgresql Linking /usr/local/Cellar/postgresql/9.2.4 ... Warnung: Postgresql konnte nicht verlinkt werden. Verknüpfung aufheben ...

Fehler: Symlink-Datei konnte nicht verknüpft werden: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 ist nicht beschreibbar. Sie sollten die Berechtigungen ändern.

Hilfe bitte

HINWEIS: Ich habe die Befehlszeilentools für Außenseiter bereits installiert.


Wenn ich mit homebrew deinstalliere und erneut versuche, es zu installieren, wird folgende Fehlermeldung angezeigt:

==> Herunterladen von http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

#################################################### ################# 100,0%

==> Patching-Patching-Datei src / pl / plpython / Makefile-Patching-Datei Contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> Installationswelt erstellen ==> Vorsichtsmaßnahmen

Notizen erstellen

Wenn Builds von PostgreSQL 9 fehlschlagen und Sie Version 8.x installiert haben, müssen Sie möglicherweise zuerst die vorherige Version entfernen. Siehe:
https://github.com/mxcl/homebrew/issues/issue/2510

Erstellen / Aktualisieren einer Datenbank

Wenn dies Ihre erste Installation ist, erstellen Sie eine Datenbank mit: initdb / usr / local / var / postgres -E utf8

Informationen zum Migrieren vorhandener Daten aus einer früheren Hauptversion (vor 9.2) von PostgreSQL finden Sie unter:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Erweiterungen laden

Standardmäßig erstellt Homebrew alle verfügbaren Contrib-Erweiterungen. Führen Sie in der psql-Befehlszeile
Folgendes aus, um eine Liste aller verfügbaren Erweiterungen anzuzeigen : SELECT * FROM pg_available_extensions;

Um einen der Erweiterungsnamen zu laden, navigieren Sie zur gewünschten Datenbank und führen Sie Folgendes aus: CREATE EXTENSION [Erweiterungsname];

Führen Sie beispielsweise Folgendes aus, um die tablefunc-Erweiterung in die aktuelle Datenbank zu laden: CREATE EXTENSION tablefunc;

Weitere Informationen zum Befehl CREATE EXTENSION finden Sie unter:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Weitere Informationen zu Erweiterungen finden Sie unter:
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

Andere

Für einige Computer muss möglicherweise gemeinsam genutzter Speicher bereitgestellt werden :
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Bei der Installation des Postgres-Gems, einschließlich ARCHFLAGS, wird empfohlen: ARCHFLAGS = "- arch x86_64" gem install pg

Informationen zum Installieren von Edelsteinen ohne Sudo finden Sie im Homebrew-Wiki.

So starten Sie postgresql beim Anmelden: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Laden Sie dann postgresql jetzt: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Or. En Wenn Sie launchctl nicht möchten / benötigen, können Sie einfach Folgendes ausführen: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Warnung: Postgresql konnte nicht verknüpft werden. Aufheben der Verknüpfung ... Fehler: Der brew linkSchritt wurde nicht erfolgreich abgeschlossen. Die erstellte Formel ist jedoch nicht mit / usr / local verknüpft. Sie können es erneut mit `brau link postgresql '==> Zusammenfassung 🍺 /usr/local/Cellar/postgresql/9.2 versuchen .4: 2831 Dateien, 38 Millionen, erstellt in 4,9 Minuten


LÖSUNG:

Ich führe diesen Befehl aus, um die Berechtigung des Ordners zu ändern:

sudo chown jeanosorio / usr / local / share / man / man7

Dann

Brew Link Postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... 421 Symlinks erstellt

Und schlussendlich:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Abrufen: pg-0.17.0.gem (100%) Erstellen nativer Erweiterungen. Dies kann eine Weile dauern ... Erfolgreich installiert pg-0.17.0

Antworten:


251

Wenn Sie die Verwendung von MacPorts vermeiden möchten, können Sie die Postgres-App herunterladen und im Anwendungsverzeichnis ablegen.

Geben Sie dann den Speicherort des neu heruntergeladenen an pg_config:

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

Wenn Sie auf das Problem mit fehlenden Headern stoßen, geben Sie das includeVerzeichnis der App an:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'

11
Nur ein Hinweis, dass Sie export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
Bundler

8
Wenn Sie Postgres 9.3 (aktuell ab heute) verwenden, können Sie dies tun: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Cavneb

Die Verwendung von Postgres93.app funktionierte, musste jedoch den bin-Pfad zur PATH env-Variablen hinzufügen, um die Installation zu bündeln.
Mkhatib

5
Musste das zum gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
Laufen

1
Vielen Dank! Ich bekam Warnung: Postgresql konnte nicht verlinkt werden. Verknüpfung aufheben ... Fehler: Symlink-Datei konnte nicht verknüpft werden: ... ist nicht beschreibbar. Sie sollten die Berechtigungen ändern. Und alles ist ein Braufehler, nachdem ich install / link postgresql gebraut habe. Die Installation geht zu: Linking /usr/local/Cellar/postgresql/9.3.4 ... was in meinem Fall ein SEHR KONFLIKTIVER ORDNER ist, der pg und gem install using mit herunterlädt es löst das Problem DANKE !!!!!!
d1jhoni1b

74

Verwenden Sie Gebräu, um zu bekommen postgresql

brew install postgresql

Überprüfen Sie, ob Sie pg_config im installierten Gebräu haben. Ich habe meine in gefunden

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Überprüfen Sie über:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Sobald Sie fertig sind, installieren Sie den pgEdelstein mit

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

2
arbeitete für mich, nachdem ich viele verschiedene Dinge ausprobiert hatte. Ich musste nur sicherstellen, dass die richtige Versionsnummer verwendet wurde (9.3.5_1 in meinem Fall)!
HK

1
Verwenden Sie ls /usr/local/Cellar/postgresql/9.*/bin/pg_config, um den richtigen Weg zu finden und kombiniertenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen

Eine etwas detailliertere Beschreibung dessen, was hier passiert. Deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova

35

Ich konnte Postgres nicht über MacPorts installieren. Stattdessen habe ich Postgress.app installiert . und angerufen

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

Hinweis: In neueren Versionen (mindestens in 9.3) lautet der Pfad tatsächlich: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config


2
Dies funktioniert, aber beachten Sie, dass Postgres.app manchmal als Postgres <NN> .app installiert wird, wobei NN die Versionsnummer ist.
Nimrodm

11

Wenn Sie Homebrew haben, geben Sie einfach Folgendes ein:

$ Brew install postgresql


1
Dies funktionierte für mich - ich hatte PostgreSQL bereits installiert, aber ich denke, ich musste es erneut installieren, um die Header zu gem install pg
aktualisieren

10

Hier ist eine weitere Alternative für den Fall, dass Sie das postgresql-Installationsprogramm direkt verwenden möchten. Es gibt ein paar Reifen, durch die du springen musst, nachdem du auf Außenseiter aktualisiert hast. Folgendes habe ich getan:

Installieren Sie zuerst die xcode-Befehlszeilentools:

xcode-select --install

Laden Sie die neueste Version von PostgreSQL (9.3.1) herunter und installieren Sie sie. In meinem Fall habe ich nur das grafische Installationsprogramm verwendet. Hier ist der Link zur Downloadseite:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Wählen Sie einfach alle Standardeinstellungen aus. In meinem Fall hat es postgres in das folgende Verzeichnis installiert. Wenn Sie es in einem anderen Verzeichnis installiert haben, merken Sie sich einfach den Pfad, den Sie gewählt haben, da Sie ihn in Kürze benötigen.

/Library/PostgreSQL/9.3

Wenn Sie jetzt versuchen, das neueste pg gem (0.17.0) zu installieren, müssen Sie einige Optionen in der Befehlszeile übergeben. Das habe ich benutzt:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Wenn Sie postgres an einem anderen Speicherort installiert haben, müssen Sie den Pfad zur Datei pg_config festlegen.

Wenn beim Versuch, das pg-Gem zu installieren, eine fehlende 'libpq.5.dylib'-Datei beanstandet wird, müssen Sie einen Symlink erstellen, der auf den tatsächlichen Speicherort dieser Datei verweist. Postgres sucht danach in Ihrem Verzeichnis / usr / local / lib /. Erstellen Sie dort einen Symlink und leiten Sie ihn an den tatsächlichen Speicherort weiter. In meinem Fall musste ich laufen:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Wenn Sie das getan haben, versuchen Sie erneut, den Edelstein erneut zu installieren, und hoffentlich funktioniert er für Sie genauso wie für mich.


9

Auf Yosemite musste ich keinen pg_configPfad angeben . Das Folgende hat es geschafft.

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

Scheint, als wäre die Architekturflagge der Schlüssel.


5

In meinem Fall (ich brauchte PG 0.16.0 auf Mavericks) habe ich postgresql über MacPorts installiert

sudo port install postgresql90

und dann

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Für die neueste Version müssen Sie -v '0.16.0' abziehen.

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Wenn Sie Homebrew installiert haben, installieren Sie MacPorts nicht, bevor Sie sich über deren Koexistenz informiert haben


5

Platzieren Sie die fehlenden --with-pg-configin Bundlers Konfigurationsdatei: /Users/<your_user>/.bundle/configum Ihnen das Leben zu erleichtern.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Dann bundle installwieder laufen .


5

Das ist für mich in Ordnung! (Postgres 93, Macox 10.9.1) 1. download @ http://postgresapp.com/ und dann

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config

4

Ich war 3 Tage lang bei meiner Bundle-Installation festgefahren. Versucht Alles wie das Hinzufügen von env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

Ich konnte sehen, dass pg gem nach diesem Befehl installiert wurde, aber es wurde immer noch nicht über die Bundle-Installation installiert, was sehr schmerzhaft war, da ich nicht weiß, was ich in Gemfile schreiben soll, außer gem 'pg'

Was für mich schließlich funktionierte, war festzustellen, dass sich meine pg_config in /Library/PostgreSQL/9.3/bin/pg_config befand und die Installation des Gemfile-Bundles standardmäßig in / usr / local / bin / pg_config angezeigt wird

Ich habe gerade den folgenden Befehl ausgeführt und Magie ist passiert. Bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config


4

In meinem Fall hat es nicht funktioniert, wenn Sie die Arch-Flags OS X 10.10.3 und postersApp 9.4 nicht angegeben haben

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

3

Der einfachste Weg, dies zu beheben, bestand darin, Postgres.app zu verwenden und meine env-Variablen so einzurichten, dass sie gem install pgeinfach funktionieren (anstatt das --with-pg-configFlag zu benötigen ).

Verwenden von Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg

2

Das hat bei mir funktioniert:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

2

In meinem Fall habe ich die über Homebrew installierte Version deinstalliert und zu Postgres.app (v9.3.4.2 zum Zeitpunkt des Schreibens) gewechselt.

Es schien nur zu funktionieren, wenn die Flags der Umgebungsarchitektur vorangestellt und der Pfad zu angegeben wurden pg_config. Ihr Kilometerstand kann variieren, daher kann diese Antwort bei Variationen pg_configdes Standorts hilfreich sein .

Hier ist der letzte vollständige Befehl, der für mich funktioniert hat:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 

2

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config


Dies funktionierte auch für mich mit Bundle-Installation wie ARCHFLAGS="-arch x86_64" bundle install
folgt

1

Ich habe den gleichen Fehler beim Ausführen der Bundle-Installation in Bezug auf das pg gem (unter Mac OS X Mavericks) erhalten. Nach stundenlangen Recherchen fand ich die Lösung. Ich habe Postgres mit Homebrew installiert

brew install postgres

Nach der Installation habe ich mit postgres eine neue Rails-App erstellt. Ich rannte

bundle install

ohne Erfolg (habe den gleichen Fehler wie die Frage). ich benutzte

which psql

Um herauszufinden, wo mein Postgres installiert war, kehrte es zurück

/usr/local/bin/psql

Bevor ich die Bundle-Installation erneut ausführen konnte, musste ich den globalen Pfad zu build.pg ändern, indem ich Folgendes ausführte

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

dann habe ich wieder bundle install ausgeführt und voila! Ich habe die Postgres verwendet, auf denen Brew sie installiert hat.


1

Führen Sie unter OS X Mavericks mit der neuesten Postgres-App die folgenden Schritte mit sudo-Berechtigungen aus

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

1

Was für mich unter 10.9.3 mit Xcode 5.1.1 funktioniert hat, war Folgendes:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Ich brauchte S. 0.17.1


1

Für jede verlorene Seele gibt es immer noch dieses Problem ohne Lösung und haben einen Rubin und Postgresbrew installiert . Hier sind die folgenden Schritte, um sicherzustellen:

  • Stellen Sie sicher, dass Ihre Version von rubynicht mit dem --universalFlag installiert wurde .
    • Dies war --universaldas Schwierigste , was ich hatte, was die letzte Wurzel des Problems war.
  • Stellen Sie sicher, dass Sie postgresqlordnungsgemäß mit initdbund createdbBefehlen initialisiert haben (suchen Sie an anderer Stelle nach Schritten, um dies zu tun).
  • Stellen Sie sicher, dass Xcode(optional) und command line toolsinstalliert ist; auf dem Terminal:
    • xcode-select --install
    • sudo xcodebuild -license (falls Xcode installiert ist) oder öffnen Sie die Anwendung und akzeptieren Sie die Lizenzvereinbarung.
    • Starten Sie den Computer neu
  • which ruby, which gemUnd which postgreszeigen soll /usr/local/bin/ruby, /usr/local/bin/gemund /usr/local/bin/postgresrespektvoll .
  • Auf dem Terminal laufen:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • oder
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Um sicherzustellen, dass alle diese Schritte erfüllt sind, konnte ich die folgenden Fehler beheben:

    • ruby.h Header-Fehler
    • developer tools installed first Error

1

Suchen Sie zunächst den Speicherort von pg_config

sudo find / -name "pg_config" -print

Die Antwort lautet /Library/PostgreSQL/9.1/bin/pg_config in meiner Konfiguration (MAC Maverick)

Versuchen Sie dann, etwas wie unten zu installieren

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

Wenn dies nicht funktioniert, versuchen Sie zu überprüfen, auf welche Weise Sie postgresql installiert haben

Brew / Mac Port / Setup

dann müssen Sie die entsprechende Option dazu ausprobieren.

Danke dir.

RAM


0

Ich hatte das gleiche Problem, das war die Lösung, die ich gefunden habe.

Wenn Sie ausführen brew doctor, wird Ihnen mitgeteilt, dass Sie wahrscheinlich etwas ohne Brew installiert haben, das die Berechtigungen für einige Ordner geändert hat. Daher müssen Sie die Berechtigungen für diesen Ordner wieder an Sie ändern.

Im Inneren /usr/local/share/mankönnen Sie Folgendes tun:

sudo chown [yourusername] man7

Und dann:

brew link postgres

Ich hoffe es hilft!


0

In ähnlicher Weise hat 'Bundle Update' nach der Installation von Mavericks einen Fehler auf dem pg gem ausgelöst, der nur in der Produktion und nicht lokal verwendet wird.

Ich verwende Brew, um meine Pakete zu verwalten, und postgresql wurde bereits installiert, aber es wurde immer noch der Fehler 'no pg_config' angezeigt.

Die Lösung bestand darin, nur "postgresql deinstallieren" und dann "postgresql installieren". Danach konnte ich das Bundle-Update sofort erfolgreich ausführen.



0

Wenn nach dem Ausprobieren hier immer noch nichts installiert werden kann, öffnen Sie Xcode und akzeptieren Sie die Lizenzvereinbarung.


0

Für mich sah die Fehlermeldung folgendermaßen aus:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Wie die Fehlermeldung zeigt, wird versucht, den Befehl / das Skript "pg_config" auszuführen. Fügen Sie es einfach dem Pfad hinzu, von wo aus sich Ihre Postgres-Installation befindet. In meinem Fall habe ich:

export PATH=/Applications/Postgres.app/Contents/Versions/9.5/bin:$PATH

dann

bundle

Das ist es.


-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config

Eine kleine Erklärung wäre schön, um zu vermeiden, dass dies in der Flut der 19 anderen Antworten verloren geht.
Brad Koch
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.