Se produjo un error al instalar pg (0.17.1) y Bundler no puede continuar


87

Acabo de instalar Rails 4.0.2y al crear una nueva aplicación, en la etapa de paquete obtengo:

Installing pg (0.17.1) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/Dee/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
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.

¿Cómo puedo solucionar esto?


1
Es posible que desee agregar una etiqueta osx. La solución parece que puede estar relacionada específicamente con su sistema operativo.
Vince

Es posible que desee visitar. stackoverflow.com/questions/3116015/… . Espero que una de esas soluciones ayude
Yana Agun Siswanto

Respuestas:


144

Estoy en una Mac con Mavericks. Mi solución fue instalar Postgres .

Y luego, en la terminal, instale usando homebrew con la configuración:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

Nota: Esta respuesta se ha editado para usar el latestenlace simbólico que se incluye actualmente en las versiones de envío de la aplicación Postgres.

Versiones anteriores sugeridas:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

Sí, el mío también estaba en un lugar diferente. Gracias por la respuesta.
Deekor

Bob correcto, la versión de postgresapp en la que esto funcionó para mí, era la versión 9.2.2.0, por lo que deben haber cambiado esta ubicación en la versión 9.3.
Robertibiris

1
Y ahora, a partir del 22/1/15 estamos viendo la versión 9.4, es bueno ver que la mantienen actualizada - "gem install pg - --with-pg-config = / Applications / Postgres. app / Contents / Versions / 9.4 / bin / pg_config "
corprew

3
Tenía prisa y me perdí la parte de esta respuesta que dice "instalar usando home-brew". Esta respuesta funcionó para mí después de que lo hicebrew update; brew install postgres
Dennis

6
En su solución, agregue la versión, de lo contrario se instalará la última gema de PG:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092


21

raíz de la aplicación:

  1. actualización de preparación
  2. brew instalar postgres
  3. gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.4 / bin / pg_config
  4. instalación del paquete
  5. ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents
  6. launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. rake db: create: all
  9. rake db: migrar
  10. rieles s

NOTA: reemplace el número de versión en el paso 3 si es necesario.


10

Respuesta que funcionaba anteriormente con una versión anterior

Lo instalé bajo mac OSX Mavericks, teniendo instalada la aplicación postgres (Versión 9.2.2.0) de www.postgresapp.com . El problema subyacente fue simplemente que, dado que postgres se instaló a través de la aplicación, el archivo de configuración reside en una ubicación que no es la predeterminada cuando se instala sin postgressapp. así que necesitamos decirle a gem dónde encontrar este archivo por:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Espero eso ayude


1
Esta fue mi solución (OSX)
raulriera

Si esto no funciona para nadie, para 9.3 el archivo de configuración se ha movido - vea la respuesta aceptada.
Deekor

5

Si falla la instalación de gemas pg, intente con el siguiente 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 PostgreSQL.app


2
Dado que la aplicación oficial cambió recientemente el nombre a "Postgres93.app", el comando debería ser: env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Blackcoat

1
para mí funcionó con: env ARCHFLAGS="-arch x86_64" gem install pg
dnlcrl

4

Parece que no tienes instalado PostgreSQL. La pggema requiere algunos encabezados de PostgreSQL para compilar la extensión nativa.


¿Qué tal tu configuración de Ruby / Bundler? ¿Estás usando Mac OS X o Linux? y si está usando Mac OS X, ¿instaló PostgreSQL a través de homebrewo PostgreSQL.app?
tungd

Estoy en una mac. Lo instalé a través de la aplicación
Deekor

Tengo 0.17.0 instalado. ¿Algún daño al usar eso con rieles 4?
Deekor

Luego intente ejecutar bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_configy bundlevuelva a ejecutar . Ajuste la ruta de configuración si instala la aplicación en ~/Applicationlugar de/Application
tungd

3

Tuve que combinar todo y usar

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

3

Si está utilizando algo que no sea Postgres en desarrollo y Postgres solo en producción, puede agregar la gema pg a su archivo de gemas así ...

group :production do
  gem 'pg',             '0.17.1'
end

Entonces usa bundle install --without production


3

Para usuarios de CentOS:

sudo yum install postgresql-devel

y

gem install pg

1

Acabo de configurar un nuevo Macbook Pro que fue construido previamente con Catalina.

Lo que funcionó para mí:

  1. Instale Postgres desde aquí: https://postgresapp.com/
  2. Agregue export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"a su .zshenv, ya que Z shell es ahora el terminal predeterminado.

0

Después de instalar Postgres tuve que ejecutar el siguiente comando

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

¡Después de este paquete, la instalación funciona muy bien!

Espero eso ayude


0

La forma en que logré superar ese error fue:

  • cd a la carpeta de la aplicación y luego configure la versión de ruby ​​localmente. Estoy usando ruby ​​2.1.2.

rbenv local 2.1.2

  • en lugar de simplemente ejecutar la instalación del paquete, instale las gemas en el proveedor / paquete

instalación del paquete: proveedor de ruta / paquete

Esto lo hizo por mí.


0

Necesitaba usar sudo

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

0

Tenía un problema con Amazon y no podía usar apt-get. Por mi trabajo:

    sudo yum install postgresql-devel

entonces:

    bundle install

e intenta de nuevo:

    rails serve

0

Si lo instaló a través de Homebrew; gem install pg -- --with-pg-config=/usr/local/bin/pg_config. Funciona con Ruby 2.4.6 y pg 0.20.0.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.