ruby on rails - No se puede instalar la gema de pg en Mavericks con Postgres.app
ruby-on-rails macos (8)
Estoy tratando de instalar la gema pg para usar con Postgres.app en mi máquina local. Estoy ejecutando Mavericks.
Postgres.app está instalado y funciona bien, pero no puedo hacer que la gema funcione. He hecho lo siguiente:
- Se utilizó el comando ''env ARCHFLAGS ='' - arch x86_64 '''' gem install pg - --with-pg-config = / Applications / Postgres.app / Contents / MacOS / bin / pg_config ''de la documentación de Postgres.app
- Actualizado Homebrew e instalado Apple GCC 4.2
- Instalado las herramientas de desarrollo de Xcode
- Actualicé mi $ PATH para hacer referencia a los directorios bin y lib de Postgres.app
Todo sin éxito. Aquí está el mensaje de error específico que recibo:
Building native extensions with: ''--with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config''
This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/Brian/.rvm/rubies/ruby-2.0.0-p353/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
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
sh: /Applications/Postgres.app/Contents/MacOS/bin/pg_config: No such file or directory
checking for libpq-fe.h... no
Can''t find the ''libpq-fe.h header
*** 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/Brian/.rvm/rubies/ruby-2.0.0-p353/bin/ruby
--with-pg
--without-pg
--with-pg-config
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/
Agradecería cualquier ayuda que pueda ofrecer. ¡Gracias!
Al estar en un mac nuevo, esto es lo que tenía que hacer:
- Instalar herramientas Xcode desde la tienda de aplicaciones
- Abra las herramientas de Xcode y acepte la licencia
Ahora ejecute (con suerte un comando a prueba de futuro):
version=$(ls /Applications/Postgres.app/Contents/Versions/ | tail -1) gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/$version/bin/pg_config .
Si tiene problemas, puede solucionar un problema comprobando el error real en mkmf.log que puede encontrar ejecutando (si usa rvm):
cd ~/.rvm ; find . -name mkmf.log | grep pg
En mi caso (ejecutando Postgres.app v9.3.4.2), solo pareció funcionar cuando anteponía las banderas de arquitectura de entorno:
env ARCHFLAGS="-arch x86_64" gem install pg -- /
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Esto funcionó para mí:
gem install pg -- --with-pg-config=`which pg_config`
Para referencia futura, dado que muchos de nosotros estamos publicando nuevas rutas para los nuevos números de versión:
Actualmente estoy viendo un enlace simbólico llamado latest
en /Applications/Postgres.app/Contents/Versions/
.
Debería poder hacer lo siguiente:
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Y olvídate del número de versión. Es posible que esto no se aplique a todas las versiones (antiguas), pero yo mismo estaba buscando un fragmento que pudiera guardar y reutilizar.
Para resolver este problema, instalé postgres usando homebrew usando lo siguiente en la ventana de la terminal:
brew install postgres
Homebrew se puede encontrar aquí
Probablemente tengas la ruta incorrecta para --with-pg-config
, comprueba si está realmente allí.
Puede encontrar la ruta correcta a pg_config
con:
find /Applications -name pg_config
En la última versión de Postgres.app, la ruta es:
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
Pude instalar pg con este comando
gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
Encontré mi camino corriendo
sudo find / -name "pg_config"
y yo instalé con éxito pg-0.17.1
agregar el directorio de bin de postulación a la ruta también funciona. solo agrega el contenedor a la pat como esta. con las instalaciones recientes, el último enlace simbólico se asegura de que esta ruta sea "estable" para futuras actualizaciones de la versión.
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin