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?

Deekor
fuente
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
Bob O'Brien
fuente
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
182

Algún tipo de error reportado aquí Instalando PG gem en OS X - falla al construir la extensión nativa

Para instalar dependencias en Ubuntu, intente esto:

sudo apt-get install libpq-dev

y esto

gem install pg
Talgat Medetbekov
fuente
5
Estoy en una Mac, ¿qué debo hacer?
Deekor
1
Siguiendo el tutorial en railstutorial.org. Esto es lo que debe hacer para Mint. Gracias.
Christopher Schneider
railstutorial.org - tutorial pagado; alguna otra idea?
Terra Ashley
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.

knice
fuente
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

Robertibiris
fuente
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

Vince
fuente
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.

tungd
fuente
¿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
Mark Wang
fuente
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

j8d
fuente
3

Para usuarios de CentOS:

sudo yum install postgresql-devel

y

gem install pg
webster
fuente
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.
Henrik Holm
fuente
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

pochocosta
fuente
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í.

Bogdan Nechita
fuente
0

Necesitaba usar sudo

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
gypsyDev
fuente
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
Maurici Abad
fuente
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.

zykadelic
fuente
-2

Esto funciona para mi

rvm list gemsets
rvm use ruby-2.4.1
bundle

error [! [resuelto con rvm use ruby] 2

DevMasterAryan
fuente
No vas a instalar la pggema aquí
zykadelic