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?

Deekor
fonte
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
Bob O'Brien
fonte
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
180

Algum tipo de erro relatado aqui Instalando PG gem no OS X - falha ao construir a extensão nativa

Para instalar dependências no Ubuntu, tente o seguinte:

sudo apt-get install libpq-dev

e isto

gem install pg
Talgat Medetbekov
fonte
5
Estou em um Mac, o que devo fazer?
Deekor
1
Seguindo o tutorial em railstutorial.org. Isso é o que você precisa fazer para o Mint. Obrigado.
Christopher Schneider
railstutorial.org - tutorial pago; alguma outra ideia?
Terra Ashley
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.

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

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

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

Tungd
fonte
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
Mark Wang
fonte
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

j8d
fonte
3

Para usuários CentOS:

sudo yum install postgresql-devel

e

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

Pochocosta
fonte
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.

Bogdan Nechita
fonte
0

Eu precisava usar sudo

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

zykadelic
fonte
-2

Funciona para mim

rvm list gemsets
rvm use ruby-2.4.1
bundle

erro [! [resolvido com rvm usar ruby] 2

DevMasterAryan
fonte
Você não está instalando a pgjoia aqui
zykadelic de