Ocorreu um erro ao instalar a pg (0.17.1) e o Bundler não pode continuar


86

Acabei de instalar Rails 4.0.2e ao criar um novo aplicativo, na fase de pacote recebo:

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.

Como faço para corrigir isso?


1
Você pode querer adicionar uma tag osx. A solução parece que pode estar relacionada especificamente ao seu sistema operacional.
Vince

Você pode querer visitar. stackoverflow.com/questions/3116015/… . Espero que uma dessas soluções ajude
Yana Agun Siswanto

Respostas:


142

Estou em um Mac rodando Mavericks. Minha solução foi instalar o Postgres .

E então na instalação do terminal usando homebrew com a configuração:

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

Nota: Esta resposta foi editada para usar o latestlink simbólico que está atualmente incluído nas versões de envio do aplicativo Postgres.

Versões anteriores sugeridas:

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

Sim, a minha também estava em um local diferente. Obrigado pela resposta.
Deekor

Bob correto, a versão do postgresapp em que funcionou para mim era a versão 9.2.2.0, portanto, eles devem ter alterado este local na versão 9.3.
Robertibiris

1
E agora, em 22/01/15, estamos olhando para a versão 9.4, é bom ver que eles estão mantendo-a atualizada - "gem install pg - --with-pg-config = / Applications / Postgres. app / Contents / Versions / 9.4 / bin / pg_config "
corprew de

2
Eu estava com pressa e perdi a parte da resposta que diz "instalar usando uma mistura caseira". Esta resposta funcionou para mim depois que eu fizbrew update; brew install postgres
Dennis

6
Em sua solução, por favor, adicione a versão, outra a última PG gem irá instalar:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092


20

raiz do aplicativo:

  1. atualização de cerveja
  2. brew install postgres
  3. gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.4 / bin / pg_config
  4. pacote de instalação
  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: migrate
  10. trilhos s

NOTA: substitua o número da versão na etapa 3, se necessário.


10

Resposta anterior com versão anterior

Instalei no mac OSX Mavericks, tendo o app postgres (versão 9.2.2.0) de www.postgresapp.com instalado. O problema subjacente era simplesmente que, como o postgres foi instalado por meio do aplicativo, o arquivo de configuração reside em um local que não é o padrão ao instalá-lo sem o postgressapp. então precisamos dizer ao gem onde encontrar esse arquivo:

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

Espero que ajude


1
Esta foi a minha solução (OSX)
raulriera

Se isso não funcionar para ninguém, para o 9.3 o arquivo de configuração foi movido - veja a resposta aceita.
Deekor

5

Se gem install pg falhar, tente o seguinte comando:

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

... da documentação PostgreSQL.app


2
Como o aplicativo oficial mudou recentemente de nome para "Postgres93.app", o comando deve ser: env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Blackcoat

1
para mim funcionou com: env ARCHFLAGS="-arch x86_64" gem install pg
dnlcrl

4

Parece que você não tem o PostgreSQL instalado. A pggem requer alguns cabeçalhos do PostgreSQL para compilar a extensão nativa.


E quanto à configuração do Ruby / Bundler? Você está usando Mac OS X ou Linux? e se estiver usando Mac OS X, você instalou o PostgreSQL via homebrewou PostgreSQL.app?
tungd

Estou em um Mac. Instalei através do aplicativo
Deekor

Tenho 0.17.0 instalado. Algum mal em usar isso com rails 4?
Deekor

Em seguida, tente correr bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_confige correr bundlenovamente. Ajuste o caminho de configuração se você instalar o aplicativo em ~/Applicationvez de/Application
tungd

3

Tive que combinar tudo e usar

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

3

Se você estiver usando algo diferente de Postgres em desenvolvimento e Postgres apenas em produção, você pode adicionar a pg gem ao seu gemfile assim ...

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

Então use bundle install --without production


3

Para usuários CentOS:

sudo yum install postgresql-devel

e

gem install pg

1

Acabei de configurar um novo Macbook Pro que foi pré-construído com Catalina.

O que funcionou para mim:

  1. Instale o Postgres aqui: https://postgresapp.com/
  2. Adicione export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"ao seu .zshenv, já que o Z shell agora é o terminal padrão.

0

Depois de instalar o Postgres, tive que executar o seguinte comando

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

Após este pacote, a instalação funciona muito bem!

Espero que ajude


0

A maneira como consegui superar esse erro foi:

  • CD para a pasta do aplicativo e, em seguida, defina a versão ruby ​​localmente. Estou usando o Ruby 2.1.2.

rbenv local 2.1.2

  • em vez de apenas executar a instalação do pacote, instale as joias no fornecedor / pacote

pacote de instalação - fornecedor de caminho / pacote

Isso fez isso por mim.


0

Eu precisava usar sudo

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

0

Eu estava tendo um problema com a Amazon e não conseguia usar o apt-get. Para o meu trabalho:

    sudo yum install postgresql-devel

então:

    bundle install

e tente novamente:

    rails serve

0

Se você instalou através do Homebrew; gem install pg -- --with-pg-config=/usr/local/bin/pg_config. Funciona com Ruby 2.4.6 e pg 0.20.0.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.