gem install pg no funciona en OSX Lion
Hay variaciones de esta pregunta que rebotan alrededor de SO, pero ninguna de ellas parece tener una respuesta que resuelva mi problema.
Estoy ejecutando OSX Lion (10.7.3). El último XCode está instalado.
He instalado Postgres usando el paquete Postgres.app de postgresapp.com.
Pero cuando trato de instalar la gema pg, aparece un error:
<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>
La salida de la/Applications/Postgres.app/Contents/MacOS/bin/pg_config
el comando es:
<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>
Todas las configuraciones parecen ser correctas, excepto la variable CONFIGURAR (que parece estar refiriéndose a otra computadora, no tengo un usuario llamado mattt).
El contenido del archivo mkmf.log es
<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>
Cualquier sugerencia sera apreciada.
He mirado el archivo extconf.rb, y después de un poco de depuración he encontrado que es una llamada a
<code>find_header ('libpq-fe.h') </code>
eso esta fallando No porque libpq-fe.h no esté allí, sino porque elfind_header
El método en sí está fallando. Intenté ejecutar find_header usando irb, y obtuve el mismo error:
<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>
EDITAR:
Descubrí que mi computadora debe estar aún más bloqueada de lo que pensaba. Estaba haciendo la instalación de paquetes para otro proyecto, y obtuve un error muy similar al instalar la gema sqlite3.
<code>checking for sqlite3.h... *** extconf.rb failed *** </code>
Nunca he tenido problemas con la gema sqlite3 en el pasado.