it-swarm.com.de

gem install pg funktioniert nicht unter OSX Lion

Es gibt Variationen dieser Frage, die sich um SO bewegen, aber keine von ihnen scheint eine Antwort zu haben, die mein Problem löst.

Ich verwende OSX Lion (10.7.3). Der neueste XCode ist installiert.

Ich habe Postgres mit dem Postgres.app-Paket von postgresapp.com installiert. 

Wenn ich jedoch versuche, den pg-gem zu installieren, erhalte ich einen Fehler:

$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
checking for libpq-fe.h... *** 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
    --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=/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/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
/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:506:in `try_cpp'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:970:in `block in find_header'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:969:in `find_header'
    from extconf.rb:40:in `<main>'


Gem files will remain installed in /Users/disaacs/.rvm/gems/Ruby-1.9.3-p125/gems/pg-0.13.2 for inspection.
Results logged to /Users/disaacs/.rvm/gems/Ruby-1.9.3-p125/gems/pg-0.13.2/ext/gem_make.out

Die Ausgabe des Befehls /Applications/Postgres.app/Contents/MacOS/bin/pg_config lautet:

$ /Applications/Postgres.app/Contents/MacOS/bin/pg_config
BINDIR = /Applications/Postgres.app/Contents/MacOS/bin
DOCDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
HTMLDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
INCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
PKGINCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
INCLUDEDIR-SERVER = /Applications/Postgres.app/Contents/MacOS/include/server
LIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
PKGLIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
LOCALEDIR = /Applications/Postgres.app/Contents/MacOS/share/locale
MANDIR = /Applications/Postgres.app/Contents/MacOS/share/man
SHAREDIR = /Applications/Postgres.app/Contents/MacOS/share
SYSCONFDIR = /Applications/Postgres.app/Contents/MacOS/etc
PGXS = /Applications/Postgres.app/Contents/MacOS/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/Users/mattt/Code/heroku/Postgres/Postgres/Vendor/postgres' '--enable-thread-safety' '--with-openssl' '--with-gssapi' '--with-bonjour' '--with-krb5' '--with-libxml' '--with-libxslt' '--with-ossp-uuid' '--with-Perl' '--with-python'
CC = gcc
CPPFLAGS = -I/usr/include/libxml2
CFLAGS = -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL = 
LDFLAGS = -Wl,-dead_strip_dylibs
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm 
VERSION = PostgreSQL 9.1.3

Alle diese Einstellungen scheinen korrekt zu sein, mit Ausnahme der Variablen CONFIGURE (die sich auf einen anderen Computer zu beziehen scheint - ich habe keinen Benutzer namens mattt).

Der Inhalt der Datei "mkmf.log" lautet

"/usr/bin/gcc-4.2 -o conftest -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/x86_64-darwin10.8.0 -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/Ruby/backward -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1 -I. -I/Users/disaacs/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/Applications/Postgres.app/Contents/MacOS/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe conftest.c  -L. -L/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib -L/Users/disaacs/.rvm/usr/lib -L. -L/usr/local/lib -L/Applications/Postgres.app/Contents/MacOS/lib     -lruby.1.9.1  -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "Ruby.h"
2:
3: int main() {return 0;}
/* end */

Anregungen werden gebeten.

Ich habe mir die extconf.rb-Datei angesehen und nach etwas Debuggen festgestellt, dass es sich um einen Aufruf handelt 

find_header ('libpq-fe.h')

das scheitert. Nicht, weil libpq-fe.h nicht vorhanden ist, sondern weil die find_header-Methode selbst fehlschlägt. Ich habe versucht, find_header mit irb auszuführen, und erhielt den gleichen Fehler:

$ irb
1.9.3-p125 :001 > require 'mkmf'
 => true 
1.9.3-p125 :002 > find_header 'libpq-fe.h'
checking for libpq-fe.h... RuntimeError: The compiler failed to generate an executable file.
You have to install development tools first.

BEARBEITEN:

Ich habe herausgefunden, dass mein Computer noch mehr verzogen sein muss, als ich dachte. Ich habe die Bundle-Installation für ein anderes Projekt durchgeführt und einen sehr ähnlichen Fehler bei der Installation des sqlite3-Gems festgestellt.

checking for sqlite3.h... *** extconf.rb failed ***

Ich hatte in der Vergangenheit noch nie Probleme mit dem sqlite3-Juwel.

30
Dave Isaacs

Ich habe endlich die Ursache des Problems gefunden! Ich bin mir immer noch nicht sicher, wie dieses Problem entstanden ist.

Sehen Sie sich den Inhalt der Datei mkmf.log an, die erstellt wird, wenn mein Installationsbefehl fehlschlägt (siehe meinen ursprünglichen Beitrag). Es protokolliert einen Versuch, den folgenden Befehl auszuführen

/usr/bin/gcc-4.2 ...and so on...

In meinem System ist kein /usr/bin/gcc-4.2 vorhanden. Es gibt eine gcc, die symbolisch mit llvm-gcc-4.2 verknüpft ist. Meine Lösung bestand darin, einen weiteren symbolischen Link zu erstellen

Sudo ln -s llvm-gcc-4.2 gcc-4.2 

Nachdem ich diesen Link erstellt hatte, funktionierte mein gem install pg-Befehl problemlos.

Ich habe die Lösung für dieses Problem im Frozen Canuck-Blog im Beitrag Fehler bei der Installation von Ruby Gem mit C-Erweiterung gefunden. Er spekuliert, dass das Problem durch widersprüchliche Versionen von XCode verursacht werden kann. Was auch immer die Ursache ist, mein ewiger Dank!

62
Dave Isaacs

Unter OS X Mavericks

Sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2

funktioniert.

19
guapolo

Ich hatte ein ähnliches Problem. Nach einer Antwort von bobfet1 auf ein ähnliches Problem konnte ich den Edelstein installieren lassen von:

Sudo env ARCHFLAGS="-Arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
15
spirossi

Vielen Dank an diesen Typ: http://www.computersnyou.com/2025/

Auf Mavericks mit: xcode-select --install (vorausgesetzt, Sie haben Xcode aus dem App Store installiert) funktioniert.

13
pjammer

Die Installation von Xcode aus dem App Store reicht nicht aus. Sie benötigen auch die Befehlszeilen-Tools von xcode. https://developer.Apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html

Öffnen Sie nach der Installation von xcode aus dem App Store xcode . Gehen Sie zu Xcode-> Entwickler-Tool öffnen -> Weitere Entwickler-ToolsDownload und installieren Sie die neuesten Befehlszeilen-Tools.

Öffnen Sie ein Terminalfenster und führen Sie Folgendes aus: Sudo gem install pg

7
Brandon Kearby

Ähnliches Problem bei Mavericks 10.9 - wurde jedoch dadurch verursacht, dass die Xcode-Lizenzvereinbarung nicht akzeptiert wurde. Blech.

Führen Sie Sudo xcodebuild aus und stimmen Sie dem Junk zu. Das alles funktioniert wie erwartet.

6
trisweb

Ich bin auch auf dieses Thema gestoßen, für mich war die Antwort die Aktualisierung der RVM. 

rvm get head
rvm install 1.9.2
2
philoye

Ich bin auch auf Mountain Lion, neben dem von @grilix vorgeschlagenen "Sudo ln -s /usr/bin/{llvm- ,}gcc-4.2", musste ich folgendes tun:

Sudo ln -s /usr/bin/{llvm-,}g++-4.2
2
izilotti

Nach einem Upgrade der Mavericks ... 

Installieren Sie Ihre Ruby-Version erneut.

rvm uninstall 1.9.2-p320

dann

rvm install 1.9.2-p320

oder welche Version von Ruby Sie auch haben.

2
Kevin Monk
$ gem install pg

Wenn das nicht klappt:

$ Sudo gem install pg

Dann, wenn das fehlgeschlagen ist:

$ Sudo find / -name “pg_config”

Nachdem Sie den Ort von pg_config gefunden haben, führen Sie Folgendes aus, um die Installation abzuschließen:

$ Sudo gem install pg --with-pg-config=/usr/local/Cellar/postgresql/9.5.1/bin/pg_config

Natürlich möchten Sie den Pfad dahin ändern, wo Sie pg_config gefunden haben.

Dann überprüfen Sie Ihre installierten Edelsteine ​​mit gem list und es sollte ungefähr so ​​aussehen:

<code>gem list</code> showing the right things

Weitere Informationen finden Sie in meinem Leitfaden .

1
Naveen Segaran

Ich bin auf Mountain Lion und die akzeptierte Antwort von Dave Isaacs arbeitete für mich. Ich musste es auch tun

Sudo ln -s llvm-g++-4.2 g++-4.2
1
nroose

Anstatt RVM selbst zu aktualisieren ( https://stackoverflow.com/a/10430742/2807795 ), wie oben beschrieben, war es die Neuinstallation von Ruby 2.0.0-p247, die nach allen anderen Schritten den Trick ausgeführt hat oben ohne Erfolg.

rvm get head
rvm install 2.0.0
1
Rick Colosimo

Wenn die Ausgabe Folgendes beinhaltet:

/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': \
    The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.

dann ist wirklich etwas in Ihrer Kompilierungsumgebung nicht in Ordnung. Besonders wenn der Fehler der erste Test ist, den extconf.rb ausführt.

Wenn Sie XCode installiert haben, haben Sie möglicherweise nicht die Befehlszeilentools-Komponente von XCode installiert. Sie waren vor kurzem aus dem eigentlichen XCode herausgelöst , daher müssen Sie sie separat installieren.

0
Michael Granger