ruby-on-rails macos postgresql osx-mavericks pg

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:

  1. 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
  2. Actualizado Homebrew e instalado Apple GCC 4.2
  3. Instalado las herramientas de desarrollo de Xcode
  4. 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:

  1. Instalar herramientas Xcode desde la tienda de aplicaciones
  2. Abra las herramientas de Xcode y acepte la licencia
  3. 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í

http://brew.sh


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