Instalando o PG gem no OS X - falha ao criar extensão nativa

183

Parece que muitos outros tiveram problemas ao instalar a pg gem. Nenhuma das soluções apresentadas para os outros funcionou para mim.

Eu tentei instalar a pg gem e o postgres.app. A pg gem não será instalada. O primeiro erro que recebo é:

Ocorreu um erro ao instalar a página (0.17.0) e o Bundler não pode continuar. Certifique-se de que seja gem install pg -v '0.17.0'bem-sucedido antes de agrupar.

O conselho de instalação sobre como apontar minha instalação gem para a configuração do pg falha com a seguinte mensagem de erro (que muitos outros neste fórum encontraram):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Não sei como encontrar ou acessar esse arquivo de log para procurar mais pistas.

Também recebo uma mensagem de erro (comando não encontrado) quando tento usar o comando sudo apt-get install. Examinei este fórum nas últimas 6 horas, tentando cada conselho para que a pg trabalhe com meu projeto de rails.

Não consigo encontrar conselhos sobre como alterar um caminho, ou especificamente, que alteração é necessária. Meu which pg_configretorna uma fonte de arquivo. Eu usei isso com um comando para instalar pg usando essa configuração. Falha.

Há tantas pessoas que tiveram problemas com isso. Muitas respostas sugerem homebrew. Eu tive que removê-lo porque ele levantou outros problemas.

Mel
fonte
1
Ei, algumas perguntas que ajudarão no futuro: - Você está no Mac, certo? Certo deu errado com homebrew? (ps, como você observou, o apt-get é apenas para o Ubuntu (e seus primos baseados no Debian)) - qual versão do postgres você possui? tente rodar psql -vno seu shell. - qual versão do ruby ​​você está executando? Parece 1.9.3, mas o que ruby -vvocê oferece?
rmosolgo
Devo acrescentar que meu psql é adicionado em: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; Saída; psql (9.3.0) mas que retorna o psql: usr / bin / psql
Mel
Oi, muito obrigado por olhar para isso. Meu psql é v 9.3.0 e ruby ​​é v 1.9.3
Mel
1
Veja a resposta de @ paninapress para Postgres.app. Funcionou muito bem para mim e não requer a instalação de outra instância do Postgres.
Jamon Holmgren 30/09

Respostas:

442

Mesmo erro para mim e não o experimentei até fazer o download do OS X 10.9 (Mavericks). Suspiro, outra dor de cabeça de atualização do sistema operacional.

Aqui está como eu o consertei (com homebrew):

  • Instale outra versão do Xcode Tools (digitar brew updateno terminal solicitará que você atualize as ferramentas do Xcode)
  • brew update
  • brew install postgresql

Depois disso gem install pgfuncionou para mim.

shicholas
fonte
7
Após dois dias de dor de cabeça tentando consertar meu banco de dados do Rails após a atualização do Mavericks, isso foi corrigido para mim, muito obrigado.
Deborah #
4
Isso funcionou para mim também - em uma nova instalação do Mavericks. Obrigado!
Marcamillion
1
Obrigado por salvar minha sanidade!
Jim
1
Ainda trabalhando. O projeto está no Ruby 2.2.0 para oferecer suporte a um aplicativo antigo, mas mesmo assim OBRIGADO.
TristanZimmerman
1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal 25/06/19
223

Se você estiver usando o Ubuntu, tente instalar o seguinte arquivo lib

sudo apt-get install libpq-dev

e depois

gem install pg

trabalhou para mim.

sandesh kota
fonte
4
Trabalhou para mim também. Estou usando o ubuntu 13.10.
Rafaelkin # 28/13
4
Apenas certifique-se de digitar corretamente. Não é libpg-dev; É um Q não um P! Levei 10 minutos para descobrir isso da maneira mais difícil.
tir38
1
Para Amazon Linux éyum install postgres-devel
andrewtweber
1
Trabalhou para mim no Ubuntu 14 !!
18bytes
6
Para CentOSyum install postgresql-devel
septerr
49

Estou usando o OS X Mavericks (versão 10.9)

e quando executo o código acima, recebi a seguinte mensagem: Se as versões do PostgreSQL 9 estão falhando e você tem a versão 8.x instalada.

Então, eu executo o seguinte comando:

ARCHFLAGS="-arch x86_64" gem install pg

e isso funcionou para mim, espero que isso ajude alguém :)

Jon
fonte
2
+1, tentei outros, mas finalmente consegui instalar o pg por gem com esta solução.
BMW
1
+1, da mesma forma, esta foi a solução para mim também, onde meu postgresql já estava instalado via brew. Obrigado Jon pelo post.
21814 Jason Hoekstra
5
nb Se instalando como root (por qualquer motivo), sudo vai antes a variável:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman
Na verdade, preciso isso toda vez que eu corro bundle installassim que eu colocá-lo dentro ~/.bash_profilecomo uma exportação :)
Jack
42

Ok, eu também tive esse problema (psql é v 9.3.0 e ruby ​​é v 2.1.2) e a solução que funcionou para mim foi definir primeiro as definições de configuração do pacote configurável:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Esta resposta finalmente me ajudou a descobrir: https://stackoverflow.com/a/9235107/3546680

paninapress
fonte
6
Este método é preferido se você usar o postgres.app. O uso do Homebrew pode corrigir o problema de extensão nativa, mas ter dois aplicativos postgres criará conflitos (como alocação de portas). Consulte também a resposta de Sayanees em stackoverflow.com/questions/19569031/…
Epigene
4
Esta é definitivamente a resposta certa para o Postgres.app.
Jamon Holmgren 30/09
Funciona bem no Mojave, tentado com sucesso há alguns minutos.
microspino
23

Eu tentei de tudo por horas, mas finalmente o seguinte foi corrigido (estou no OS X 10.9.4):

  1. Instalar ferramentas de linha de comando do Xcode (site da Apple Developer)
  2. desinstalação do brew postgresql
  3. instalação do brew postgresql
  4. ARCHFLAGS = "- arch x86_64" instalação da gema pág.
Ali Yazdani
fonte
Obrigado. Eu usei o sudo na etapa 4, isso é ruim? Como posso evitá-lo?
Roy
@Roy - prazer em ajudar :) - deve ficar bem, provavelmente quer evitar o uso do sudo, pois acredito que o instalará para todos os usuários, mas se você for o único usuário no sistema, provavelmente não é tão grande assim. .
Ali Yazdani
brew uninstall postgresqle brew install postgresqlnão são etapas necessárias no OS X 10.10 e 10.11. Apenas gem uninstall pg(e remova todas as versões), verifique se você bundleou gem install pgnovamente, e as extensões nativas serão reconstruídas com as novas ferramentas de linha de comando para esta versão do OS X.
Olivier Lacan
7

passo fácil

  1. brew install postgresql
  2. gem install pg -v 'your version'
James Dela Cruz
fonte
6

Da mesma forma, depois de instalar o Mavericks, bundle updateocorreu um erro na pg gem, que é usada apenas na produção e não localmente.

Eu uso o Brew para gerenciar meus pacotes e o postgresql já estava instalado, mas ainda estava recebendo o erro 'no pg_config'.

A solução era justamente brew uninstall postgresqlentão brew install postgresql. Após o qual eu fui imediatamente capaz de executar com sucesso bundle update.

Shannon Perkins
fonte
6

Acredito que a resposta “correta” seria primeiro configurar o PATH corretamente para o Postgres.app adicionando o seguinte a ~/.profile( .zshrcou ~/.zprofilese estiver usando o ZSH):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Em seguida, abra uma nova guia ou janela no terminal e instale a pggema com:

ARCHFLAGS="-arch x86_64" gem install pg

Documentado aqui:

Matias Korhonen
fonte
5

No OSX com o Postgres instalado em / Applications, simplesmente executo o seguinte comando (altere 0,20 e 9,4 de acordo com sua versão)

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

Você devia ter :

Criando extensões nativas com: '--with-pg-config = / Applications / Postgres.app / Conteúdo / Versões / 9.4 / bin / pg_config' Isso pode demorar um pouco ... Instalado com êxito a pg-0.20.

jbheren
fonte
Você pode explicar por que tivemos que usar o hífen 2 tempo extra antes que o argumento fosse realmente fornecido?
Akash Agarwal
3

Passei um dia nisso e aqui está como eu o consertei:

Eu descobri que o valor global do build.pg foi definido como: /opt/local/lib/postgresql91/bin/pg_config e não foi lá que o postgres foi instalado.

Corrigi-o substituindo o valor de build.pg para: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config onde é a minha instalação do postgresql.

HosseinToussi
fonte
1

Experimentar:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
fonte
0

Resolvido! Eu encontrei alguma falta de biblioteca para o PostgreSQL no sistema. Apenas dois passos o resolveram:

brew install postgresql

Então corra

gem install pg

user6756462
fonte
0

Para aqueles que não estão interessados ​​em usar brew.

  1. Baixe o PostgreSQLaplicativo.
  2. Siga as instruções padrão do macOS para instalá-lo.
  3. É aconselhável executar PostgreSQl.
  4. Execute gem install pg -- --with-pg-config=/ path / to / postgress / em / your / applications / folder / `
    • Por exemplo, na minha máquina é /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Esmaeil MIRZAEE
fonte