gem install pg funktioniert unter OSX Lion nicht
Es gibt Variationen dieser Frage, die um SO herum auftauchen, 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.
Aber wenn ich versuche, den pg-Edelstein zu installieren, erhalte ich einen Fehler:
<code>$ 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 </code>
Die Ausgabe der/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Befehl ist:
<code>$ /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 </code>
Alle diese Einstellungen scheinen korrekt zu sein, mit Ausnahme der Variable CONFIGURE (die sich auf einen anderen Computer zu beziehen scheint - ich habe keinen Benutzer namens mattt).
Der Inhalt der Datei mkmf.log lautet
<code>"/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 */ </code>
Anregungen wäre dankbar.
Ich habe mir die Datei extconf.rb angesehen und nach einigem Debuggen festgestellt, dass es sich um einen Aufruf von handelt
<code>find_header ('libpq-fe.h') </code>
das scheitert. Nicht weil libpq-fe.h nicht da ist, sondern weil diefind_header
Methode selbst schlägt fehl. Ich habe versucht, find_header mit irb auszuführen und habe den gleichen Fehler erhalten:
<code>$ 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. </code>
BEARBEITEN:
Ich habe herausgefunden, dass mein Computer noch mehr kaputt sein muss, als ich dachte. Ich habe die Bundle-Installation für ein anderes Projekt durchgeführt und bei der Installation des sqlite3-Gems ist ein sehr ähnlicher Fehler aufgetreten.
<code>checking for sqlite3.h... *** extconf.rb failed *** </code>
Ich hatte in der Vergangenheit noch nie Probleme mit sqlite3.