gem install pg не работает на OSX Lion
Есть варианты этого вопроса, связанные с SO, но ни у одного из них нет ответа, который решает мою проблему.
Я использую OSX Lion (10.7.3). Последний XCode установлен.
Я установил Postgres с помощью пакета Postgres.app от postgresapp.com.
Но когда я пытаюсь установить гем pg, я получаю ошибку:
<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>
Выход из/Applications/Postgres.app/Contents/MacOS/bin/pg_config
команда является:
<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>
Все эти настройки кажутся правильными, за исключением переменной CONFIGURE (которая, похоже, относится к другому компьютеру - у меня нет пользователя с именем mattt).
Содержимое файла mkmf.log
<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>
Мы ценим любые предложения.
Я посмотрел на файл extconf.rb и после некоторой отладки обнаружил, что это вызов
<code>find_header ('libpq-fe.h') </code>
это терпит неудачу. Не потому, что там нет libpq-fe.h, а потому чтоfind_header
Сам метод терпит неудачу. Я попытался запустить find_header с использованием irb, и получил ту же ошибку:
<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>
EDIT:
Обнаружил, что мой компьютер, должно быть, даже больше, чем я думал. Я занимался установкой пакета для другого проекта, и я получил очень похожую ошибку при установке гема sqlite3.
<code>checking for sqlite3.h... *** extconf.rb failed *** </code>
У меня никогда не было проблем с гемом sqlite3 в прошлом.