ruby postgresql rubygems osx-lion pg

ruby - gem install pg no funciona en OSX Lion



postgresql rubygems (13)

¡Finalmente encontré la causa del problema! Aunque todavía no estoy seguro de cómo surgió este problema.

Mire los contenidos del archivo mkmf.log que se crea cuando falla mi comando de instalación (vea mi publicación original). Registra un intento de ejecutar el siguiente comando

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

No hay /usr/bin/gcc-4.2 en mi sistema. Hay un gcc , que está simbólicamente vinculado a llvm-gcc-4.2 . Mi solución fue crear otro enlace simbólico.

sudo ln -s llvm-gcc-4.2 gcc-4.2

Después de hacer este enlace, mi comando gem install pg funcionó sin problemas.

Encontré la solución a este problema en el blog de Frozen Canuck en la publicación Error Error al instalar Ruby Gem con C Extension . Especula que el problema puede ser causado por versiones contradictorias de XCode. cualquiera que sea la causa, mi eterno agradecimiento!

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 intento instalar la gema pg, obtengo un error:

$ 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

El resultado del comando /Applications/Postgres.app/Contents/MacOS/bin/pg_config es:

$ /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

Todos esos ajustes parecen ser correctos, a excepción de la variable CONFIGURAR (que parece referirse a otra computadora --no tengo ningún usuario llamado mattt).

El contenido del archivo mkmf.log es

"/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 */

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

find_header (''libpq-fe.h'')

eso está fallando No porque libpq-fe.h no esté allí, sino porque el método find_header está fallando. Intenté ejecutar find_header usando irb, y obtuve el mismo error:

$ 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.

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 una falla muy similar al instalar la gema sqlite3.

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

Nunca he tenido problemas con la gema sqlite3 en el pasado.


Después de una actualización de Mavericks ...

Vuelva a instalar su versión de rubí.

rvm uninstall 1.9.2-p320

entonces

rvm install 1.9.2-p320

o cualquier versión de rubí que tengas.


En OS X Mavericks

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

trabajos.


En lugar de actualizar el propio RVM ( https://.com/a/10430742/2807795 ), como se indica más arriba, fue la reinstalación de Ruby 2.0.0-p247 la que funcionó, después de probar todos los pasos anteriores sin éxito.

rvm get head rvm install 2.0.0


Estoy en Mountain Lion, y la respuesta aceptada de Dave Isaacs funcionó para mí. También tuve que hacer

sudo ln -s llvm-g++-4.2 g++-4.2


Gracias a este chico: http://www.computersnyou.com/2025/

En Mavericks usando: xcode-select --install (suponiendo que haya instalado Xcode desde la tienda de aplicaciones) funciona.


Instalar xcode desde la tienda de aplicaciones no es suficiente. También necesitarás las herramientas de línea de comando de xcode. https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html

Después de instalar xcode desde la tienda de aplicaciones, abra xcode. Ir a Xcode-> Abrir herramienta de desarrollador-> Más herramientas de desarrollo Descargar e instalar las últimas herramientas de línea de comandos.

Abra una ventana de terminal y ejecute: sudo gem install pg


Problema similar en Mavericks 10.9 - pero fue causado por no haber aceptado el acuerdo de licencia de Xcode. Blech.

Ejecute sudo xcodebuild y acepte la basura. Todo funciona como se espera


Si la salida incluye:

/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.

entonces realmente hay algo mal con su entorno de compilación. Especialmente cuando la falla es la primera prueba que ejecuta extconf.rb .

Si tiene instalado XCode, ¿quizás no tenga instalado el componente de herramientas de línea de comandos de XCode? https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html fueron https://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html , por lo que debe instalarlos por separado.


También encontré este problema, para mí la respuesta fue actualizar RVM de todas las cosas.

rvm get head rvm install 1.9.2


Tuve un problema similar. Tras una respuesta de bobfet1 para un problema similar, pude obtener la gema instalada de la siguiente manera:

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config


Yo también, estoy en Mountain Lion, además del "sudo ln -s /usr/bin/{llvm-,}gcc-4.2" sugerido por @grilix, necesitaba hacer:

sudo ln -s /usr/bin/{llvm-,}g++-4.2


$ gem install pg

Si eso falló:

$ sudo gem install pg

Entonces, si eso falló:

$ sudo find / -name “pg_config”

Después de encontrar la ubicación de pg_config , ejecútelo para finalmente instalarlo:

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

Por supuesto, querrás cambiar la ruta a donde encuentres pg_config .

Luego, revisa tus gemas instaladas con la gem list , y debería mostrar algo como esto:

Más información se puede encontrar en mi guía .