Installieren von PG gem unter OS X - Fehler beim Erstellen einer nativen Erweiterung


183

Es scheint, dass viele andere Probleme hatten, das pg gem zu installieren. Keine der für andere gestellten Lösungen hat für mich funktioniert.

Ich habe versucht, die pg gem und postgres.app zu installieren. Das pg gem wird nicht installiert. Der erste Fehler, den ich bekomme, ist:

Bei der Installation von pg (0.17.0) ist ein Fehler aufgetreten, und Bundler kann nicht fortfahren. Stellen Sie sicher, dass dies gem install pg -v '0.17.0'erfolgreich ist, bevor Sie bündeln.

Der Installationshinweis zum Verweisen meiner Gem-Installation auf die Konfiguration für pg schlägt mit der folgenden Fehlermeldung fehl (auf die viele andere in diesem Forum gestoßen sind):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Ich weiß nicht, wie ich diese Protokolldatei finden oder darauf zugreifen soll, um nach weiteren Hinweisen zu suchen.

Ich erhalte auch eine Fehlermeldung (Befehl nicht gefunden), wenn ich versuche, den Befehl sudo apt-get install zu verwenden. Ich habe dieses Forum in den letzten 6 Stunden durchsucht und jeden Ratschlag ausprobiert, um pg mit meinem Rails-Projekt zum Laufen zu bringen.

Ich kann keinen Rat finden, wie man einen Pfad ändert oder welche Änderung erforderlich ist. My which pg_configgibt eine Dateiquelle zurück. Ich habe das mit einem Befehl verwendet, um pg mit dieser Konfiguration zu installieren. Es schlägt fehl.

Es gibt so viele Leute, die Probleme damit hatten. Viele Antworten deuten auf Homebrew hin. Ich musste das entfernen, weil es andere Probleme aufwirft.


1
Hey, ein paar Fragen, die dir später helfen werden: - Du bist auf dem Mac, oder? Richtig ging falsch mit Homebrew? (ps, wie Sie bemerkt haben, apt-get ist nur für Ubuntu (und seine Cousins ​​auf Debian-Basis)) - welche Postgres-Version haben Sie? Versuchen Sie, psql -vin Ihrer Shell zu laufen . - Welche Ruby-Version verwenden Sie? Es sieht aus wie 1.9.3, aber was gibt ruby -ves dir?
rmosolgo

Ich sollte hinzufügen, dass meine psql hinzugefügt wird in: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; Ausfahrt; psql (9.3.0), aber welches psql zurückgibt: usr / bin / psql
Mel

Hallo, vielen Dank, dass Sie sich das angesehen haben. Mein psql ist v 9.3.0 und ruby ​​ist v 1.9.3
Mel

1
Siehe die Antwort von @ paninapress für Postgres.app. Es hat bei mir hervorragend funktioniert und erfordert keine Installation einer weiteren Instanz von Postgres.
Jamon Holmgren

Antworten:


442

Der gleiche Fehler für mich und ich habe ihn erst erlebt, als ich OS X 10.9 (Mavericks) heruntergeladen habe. Seufz, ein weiteres Problem bei der Aktualisierung des Betriebssystems.

So habe ich es behoben (mit Homebrew):

  • Installieren Sie einen anderen Build von Xcode Tools ( brew updatewenn Sie das Terminal eingeben, werden Sie aufgefordert, die Xcode Build Tools zu aktualisieren.)
  • brew update
  • brew install postgresql

Danach hat es gem install pgbei mir geklappt.


7
Nach zwei Tagen Kopfschmerzen beim Versuch, meine Rails-Datenbank nach dem Mavericks-Upgrade zu reparieren, wurde dies für mich behoben. Vielen Dank.
Deborah

4
Das hat auch bei mir funktioniert - bei einer neuen Mavericks-Installation. Vielen Dank!
Marcamillion

1
Danke, dass du meine geistige Gesundheit gerettet hast!
Jim

1
Immer noch am arbeiten. Das Projekt ist auf Ruby 2.2.0, um eine alte App zu unterstützen, aber trotzdem DANKE.
TristanZimmerman

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal

223

Wenn Sie Ubuntu verwenden, versuchen Sie, die folgende lib-Datei zu installieren

sudo apt-get install libpq-dev

und dann

gem install pg

arbeitete für mich.


4
Hat auch für mich gearbeitet. Ich benutze Ubuntu 13.10.
Rafaelkin

4
Stellen Sie einfach sicher, dass Sie es richtig eingeben. Es ist nicht libpg-dev; Es ist ein Q, kein P! Ich habe 10 Minuten gebraucht, um das auf die harte Tour herauszufinden.
Tir38

1
Für Amazon Linux ist esyum install postgres-devel
andrewtweber

1
Arbeitete für mich unter Ubuntu 14 !!
18 Bytes

6
Für CentOSyum install postgresql-devel
September

49

Ich benutze OS X Mavericks (Version 10.9)

und wenn ich das oben genannte ausführe, wird folgende Meldung angezeigt: Wenn Builds von PostgreSQL 9 fehlschlagen und Sie Version 8.x installiert haben.

Also führe ich den folgenden Befehl aus:

ARCHFLAGS="-arch x86_64" gem install pg

und das hat bei mir funktioniert, ich hoffe das hilft jemandem :)


2
+1, ich habe andere ausprobiert, aber schließlich habe ich pg von gem mit dieser Lösung installiert.
BMW

1
+1, ebenfalls war dies die Lösung für mich, wo mein Postgresql bereits über Brew installiert wurde. Danke Jon für den Beitrag.
Jason Hoekstra

5
nb Bei der Installation als root (aus welchem ​​Grund auch immer) geht sudo vor die Variable:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman

Eigentlich brauche ich das jedes Mal, wenn ich laufe, bundle installalso habe ich es ~/.bash_profileals Export
eingefügt

42

Ok, ich hatte auch dieses Problem (psql ist v 9.3.0 und ruby ​​ist v 2.1.2) und die Lösung, die für mich funktionierte, bestand darin, zuerst die Bundle-Konfigurationseinstellungen festzulegen:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Diese Antwort hat mir endlich geholfen, es herauszufinden: https://stackoverflow.com/a/9235107/3546680


6
Diese Methode wird bevorzugt, wenn Sie postgres.app verwenden. Die Verwendung von Homebrew kann das native Erweiterungsproblem beheben, aber zwei Postgres-Anwendungen führen zu Konflikten (z. B. Portzuweisung). Siehe auch Sayanees 'Antwort unter stackoverflow.com/questions/19569031/…
Epigene

4
Dies ist definitiv die richtige Antwort für Postgres.app.
Jamon Holmgren

Funktioniert gut auf Mojave, das vor einigen Minuten erfolgreich ausprobiert wurde.
Microspino

23

Ich habe stundenlang alles versucht, aber das Folgende hat es endlich behoben (ich bin unter OS X 10.9.4):

  1. Installieren Sie die Xcode-Befehlszeilentools (Apple Developer Site).
  2. brauen deinstallieren postgresql
  3. brauen installieren postgresql
  4. ARCHFLAGS = "- arch x86_64" gem install pg

Danke. Ich hatte Sudo für Schritt 4 verwendet. Ist das eine schlechte Sache? Wie kann ich das vermeiden?
Roy

@ Roy - ich bin froh zu helfen :) - sollte in Ordnung sein, wahrscheinlich möchte ich die Verwendung von sudo vermeiden, da ich glaube, dass es für alle Benutzer installiert wird, aber wenn Sie der einzige Benutzer auf dem System sind, ist es wahrscheinlich keine so große Sache .
Ali Yazdani

brew uninstall postgresqlund brew install postgresqlsind unter OS X 10.10 und 10.11 keine notwendigen Schritte. Einfach gem uninstall pg(und alle Versionen entfernen), dann stellen Sie sicher, dass Sie bundleoder gem install pgerneut und native Erweiterungen mit den neuen Befehlszeilentools für diese OS X-Version neu erstellt werden.
Olivier Lacan


6

In ähnlicher Weise bundle updatewarf Mavericks nach der Installation einen Fehler auf den pg-Edelstein, 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 war genau brew uninstall postgresqldann brew install postgresql. Danach konnte ich sofort erfolgreich laufen bundle update.


6

Ich glaube, die „richtige“ Antwort wäre, zuerst PATH für Postgres.app richtig zu konfigurieren, indem Folgendes hinzugefügt wird ~/.profile( .zshrcoder ~/.zprofilewenn ZSH verwendet wird):

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

Öffnen Sie dann eine neue Registerkarte oder ein neues Fenster im Terminal und installieren Sie den pgEdelstein mit:

ARCHFLAGS="-arch x86_64" gem install pg

Hier dokumentiert:


5

Unter OSX mit in / Applications installierten Postgres führe ich einfach den folgenden Befehl aus (ändern Sie 0,20 und 9,4 entsprechend Ihrer Version).

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

Du solltest haben :

Erstellen nativer Erweiterungen mit: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Dies kann eine Weile dauern ... Pg-0.20 erfolgreich installiert.


Können Sie erklären, warum wir den Bindestrich 2 extra verwenden mussten, bevor das Argument tatsächlich geliefert wurde?
Akash Agarwal

3

Ich habe einen Tag damit verbracht und hier ist, wie ich es repariert habe:

Ich fand heraus, dass der globale Wert von build.pg auf: gesetzt war: /opt/local/lib/postgresql91/bin/pg_config und dort wurde postgres nicht installiert.

Ich habe es behoben, indem ich den Wert von build.pg durch ersetzt habe: Dort bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config befindet sich meine Postgresql-Installation.


1

Versuchen:

gem install pg -- --with-pg-config=`which pg_config`

0

Gelöst! Ich habe einen Mangel an Bibliothek für PostgreSQL auf dem System gefunden. Nur zwei Schritte lösten es:

brew install postgresql

Dann renne

gem install pg


0

Für diejenigen, die nicht interessiert sind zu verwenden brew.

  1. Herunterladen PostgreSQLAnwendung .
  2. Befolgen Sie die MacOS-Standardanweisung, um es zu installieren.
  3. Es ist ratsam zu laufen PostgreSQl.
  4. Führen Sie gem install pg -- --with-pg-config=/ path / to / postgress / in / Ihrem / Anwendungen / Ordner / `aus
    • Zum Beispiel in meiner Maschine ist es /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
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.