Impossível instalar PG gem no meu mac com Mavericks

103

Estou tentando instalar o pg gem para trabalhar novamente com meus projetos rails. Mas recebo este erro:

Construindo extensões nativas. Isso pode demorar um pouco ... ERRO: Erro ao instalar a página: ERRO: Falha ao construir a extensão nativa do gem.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

a construção falhar, por favor tente novamente com --with-pg-config = / path / to / pg_config verificando por libpq-fe.h ... não Não é possível encontrar o cabeçalho 'libpq-fe.h * extconf.rb falhou * Não foi possível criar o Makefile por algum motivo, provavelmente falta de bibliotecas e / ou cabeçalhos necessários. Verifique o arquivo mkmf.log para obter mais detalhes. Você pode precisar de opções de configuração.

Opções de configuração fornecidas: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib - without-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =. --curdir --ruby = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include = $ {pg-dir} / include - -with-pg-lib --without-pg-lib = $ {pg-dir} /

Os arquivos Gem permanecerão instalados em /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 para inspeção. Resultados registrados em /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Tentei tudo o que encontrei no stackoverflow, mas ainda recebo este erro.

Se tento instalar o postgresql usando o brew, recebo o seguinte aviso:

Aviso: postgresql-9.2.4 já instalado, apenas não está vinculado

Se eu tentar ligar

brew link postgresql Linking /usr/local/Cellar/postgresql/9.2.4 ... Aviso: Não foi possível vincular postgresql. Desvinculando ...

Erro: Não foi possível criar um link simbólico para o arquivo: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 não é gravável. Você deve alterar suas permissões.

Ajuda por favor

NOTA: Eu já instalei as ferramentas de linha de comando para independentes.


Se eu desinstalar usando o homebrew e tentar instalar novamente, recebo este erro:

==> Baixando http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

############################################################### #################### 100,0%

==> Arquivo de patch de patch src / pl / plpython / arquivo de patch de Makefile contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> make install-world ==> Advertências

Notas de construção

Se as compilações do PostgreSQL 9 estiverem falhando e você tiver a versão 8.x instalada, pode ser necessário remover a versão anterior primeiro. Veja:
https://github.com/mxcl/homebrew/issues/issue/2510

Criar / atualizar um banco de dados

Se esta é sua primeira instalação, crie um banco de dados com: initdb / usr / local / var / postgres -E utf8

Para migrar dados existentes de uma versão principal anterior (pré-9.2) do PostgreSQL, consulte:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Carregando extensões

Por padrão, o Homebrew constrói todas as extensões Contrib disponíveis. Para ver uma lista de todas as extensões disponíveis, na linha de comando do psql, execute:
SELECT * FROM pg_available_extensions;

Para carregar qualquer um dos nomes de extensão, navegue até o banco de dados desejado e execute: CREATE EXTENSION [nome da extensão];

Por exemplo, para carregar a extensão tablefunc no banco de dados atual, execute: CREATE EXTENSION tablefunc;

Para obter mais informações sobre o comando CREATE EXTENSION, consulte:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Para obter mais informações sobre extensões, consulte:
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

De outros

Algumas máquinas podem exigir o provisionamento de memória compartilhada:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Ao instalar o gem postgres, incluindo ARCHFLAGS é recomendado: ARCHFLAGS = "- arch x86_64" gem instalar pg

Para instalar gems sem sudo, consulte o wiki do Homebrew.

Para que o launchd inicie o postgresql no login: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Em seguida, carregue o postgresql agora: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Ou , se você não quiser / precisar do launchctl, você pode apenas executar: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Aviso: Não foi possível vincular o postgresql. Desvinculando ... Erro: A brew linketapa não foi concluída com sucesso A fórmula criada, mas não está vinculada a / usr / local Você pode tentar novamente usando `brew link postgresql '==> Resumo 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 arquivos, 38M, construído em 4,9 minutos


SOLUÇÃO:

Eu executo este comando para alterar a permissão da pasta:

sudo chown jeanosorio / usr / local / share / man / man7

Então

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... 421 links simbólicos criados

E finalmente:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Buscando: pg-0.17.0.gem (100%) Construindo extensões nativas. Isso pode demorar um pouco ... Instalação com sucesso pg-0.17.0

Jean
fonte

Respostas:

252

Se quiser evitar o uso de MacPorts, você pode baixar o aplicativo Postgres e colocá-lo no diretório do aplicativo.

Em seguida, especifique a localização do recém-baixado pg_config:

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

Se você encontrar um problema de cabeçalhos ausentes, tente especificar o includediretório do aplicativo:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
Yuri
fonte
11
Apenas uma observação que você ainda pode usar o bundler definindo uma variável env de configuração:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42
8
Se você estiver usando o Postgres 9.3 (o mais recente a partir de hoje), você pode fazer isso: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb
O uso de Postgres93.app funcionou, mas foi necessário adicionar o caminho bin à variável env PATH para instalar o pacote.
mkhatib de
5
Tive que fazer isso funcionar usando gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez
1
Obrigado! Eu estava recebendo Aviso: não foi possível vincular o postgresql. Desvinculando ... Erro: Não foi possível criar um link simbólico para o arquivo: ... não é gravável. Você deve alterar suas permissões. E tudo é falha de fabricação, depois de preparar a instalação / link postgresql A instalação vai para: Linking /usr/local/Cellar/postgresql/9.3.4 ... que é no meu caso uma PASTA MUITO CONFLICTIVA, baixando o pg e o gem install usando resolve o problema OBRIGADO !!!!!!
d1jhoni1b
74

Use cerveja para obter postgresql

brew install postgresql

Verifique se você tem pg_config na mistura instalada. Eu encontrei o meu em

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Verifique via:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Uma vez feito isso, instale a pggema com

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
Ayush Goel
fonte
2
funcionou para mim depois de tentar muitas coisas diferentes. eu só tinha que ter certeza de usar o número de versão correto (9.3.5_1 no meu caso)!
HK
1
Use ls /usr/local/Cellar/postgresql/9.*/bin/pg_configpara encontrar o caminho real e combinadoenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen
Uma descrição um pouco mais detalhada sobre o que acontece aqui deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova
35

Não consegui instalar o postgres via MacPorts. Em vez disso, instalei Postgress.app . e chamado

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

Observação: nas versões mais recentes (pelo menos na 9.3), o caminho é na verdade: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

iceui2
fonte
2
Isso funciona, mas observe que às vezes Postgres.app é instalado como Postgres <NN> .app, onde NN é o número da versão.
nimrodm
11

Se você tem homebrew, basta digitar:

$ brew install postgresql

user2373148
fonte
1
Isso funcionou para mim - eu já tinha o PostgreSQL instalado, mas acho que tive que instalá-lo novamente, para atualizar os cabeçalhos (?) Então eu poderia fazergem install pg
Crimbo
10

Aqui está outra alternativa, caso você queira usar o instalador postgresql diretamente. Há alguns obstáculos que você precisa resolver para começar, depois de atualizar para os mavericks. Aqui está o que eu fiz:

Instale as ferramentas de linha de comando xcode primeiro:

xcode-select --install

Baixe e instale a última versão do PostgreSQL (9.3.1), no meu caso usei apenas o instalador gráfico. Aqui está o link para a página de downloads:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Basta escolher todos os padrões que ele oferece. No meu caso, ele instalou o postgres no seguinte diretório, se você instalou em um diretório diferente, lembre-se do caminho que você escolheu, pois você precisará dele em breve.

/Library/PostgreSQL/9.3

Se agora você tentar instalar a última pg gem (0.17.0), você precisará passar algumas opções na linha de comando. Isso é o que eu usei:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Se você instalou o postgres em um local diferente, será necessário corrigir o caminho para o arquivo pg_config.

Se reclamar da falta do arquivo 'libpq.5.dylib' ao tentar instalar o pg gem, você precisará criar um link simbólico apontando para a localização real desse arquivo. O Postgres está procurando por ele em seu diretório / usr / local / lib /, portanto, crie um link simbólico lá e redirecione-o para sua localização real. No meu caso, tive que executar:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Depois de fazer isso, tente instalar a gema novamente e espero que funcione para você da mesma forma que funcionou para mim.

2potatocakes
fonte
9

Para mim, no Yosemite, não precisei especificar o pg_configcaminho. O seguinte fez isso.

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

Parece que a bandeira da arquitetura é a chave.

dinigo
fonte
5

No meu caso (eu precisava do PG 0.16.0 no Mavericks), instalei o postgresql via MacPorts

sudo port install postgresql90

e depois

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Para a versão mais recente, você precisa deduzir -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Se você tem o Homebrew instalado, não instale MacPorts antes de ler sobre sua coexistência

Gi0
fonte
5

Coloque o que falta --with-pg-configno arquivo de configuração do Bundler: /Users/<your_user>/.bundle/configpara tornar sua vida mais fácil.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Então corra bundle installnovamente.

Bruno Buccolo
fonte
5

Isso funciona para mim! (Postgres 93, mac ox 10.9.1) 1. baixar @ http://postgresapp.com/ e então

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
meck373
fonte
4

Fiquei preso na instalação do pacote por 3 dias. Tentei tudo como adicionar env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

Consegui ver o pg gem sendo instalado após este comando, mas ainda não estava instalando a partir do bundle install, o que foi uma dor porque eu não sabia o que escrever no Gemfile, exceto gem 'pg'

A coisa que finalmente funcionou para mim foi descobrir que meu pg_config estava em /Library/PostgreSQL/9.3/bin/pg_config e por padrão a instalação do pacote Gemfile está em / usr / local / bin / pg_config

Acabei de executar o seguinte comando e mágica aconteceu. bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

Neeraj Gupta
fonte
4

No meu caso, não funcionou se você não especificar os arch flags, OS X 10.10.3 e postersApp 9.4

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

A maneira mais fácil de resolver isso era usar Postgres.app e configurar meus env vars para que gem install pgfuncionasse (em vez de exigir o --with-pg-configsinalizador).

Usando Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg
sorriso
fonte
2

Isso é o que funcionou para mim:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
tokhi
fonte
2

No meu caso, desinstalei a versão instalada via homebrew e mudei para Postgres.app (v9.3.4.2 no momento da escrita).

Pareceu funcionar apenas ao preparar os sinalizadores de arquitetura do ambiente e especificar o caminho para pg_config. Sua milhagem pode variar, então esta resposta pode ajudar com variações na pg_configlocalização de.

Aqui está o comando final e completo que funcionou para mim:

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

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config

Taysky
fonte
isso também funcionou para mim com a instalação do pacote assim:ARCHFLAGS="-arch x86_64" bundle install
d4n3
1

Eu estava recebendo o mesmo erro ao executar a instalação do pacote em relação ao pg gem (usando o Mac OS X Mavericks). Após horas de pesquisa, encontrei a solução. Eu instalei o postgres usando homebrew

brew install postgres

Depois de instalá-lo, criei um novo aplicativo rails usando o postgres. Eu corri

bundle install

sem sucesso (obteve o mesmo erro da pergunta). eu usei

which psql

para descobrir onde meu postgres foi instalado, ele retornou

/usr/local/bin/psql

antes de executar o bundle install novamente, tive que alterar o caminho global para build.pg executando o seguinte

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

então executei a instalação do bundle novamente e pronto! Eu usei o postgres onde o brew o instalou.

Rav Johal
fonte
1

No OS X Mavericks com o aplicativo Postgres mais recente, faça o seguinte com privilégios sudo

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Vailancio Rodrigues
fonte
1

O que funcionou para mim no 10.9.3 com o Xcode 5.1.1 foi o seguinte:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Eu precisava pg 0.17.1

Tom Andersen
fonte
1

Para qualquer alma perdida, ainda tem esse problema sem resolução e tem um ruby e um postgresbrew instalados . Estas são as etapas a seguir para garantir:

  • Certifique-se de que sua versão do rubynão foi instalada com o--universal sinalizador.
    • Essa foi a coisa mais difícil de descobrir, --universalqual era a raiz final do problema.
  • Certifique-se de ter inicializado postgresqlcorretamente com initdbecreatedb comandos (procure outras etapas para fazer isso).
  • Certifique-se de que Xcode(opcional) e command line toolsestá instalado; no terminal:
    • xcode-select --install
    • sudo xcodebuild -license (se o Xcode estiver instalado) ou abra o aplicativo e aceite o contrato de licença.
    • Reiniciar computador
  • which ruby, which geme which postgresdeve mostrar /usr/local/bin/ruby, /usr/local/bin/geme com /usr/local/bin/postgresrespeito.
  • No terminal, execute:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • ou
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Certificando-me de que todas essas etapas foram satisfeitas, consegui resolver os seguintes erros:

    • ruby.h erro de cabeçalho
    • developer tools installed first erro
link_boy
fonte
1

Em primeiro lugar, encontre a localização pg_config

sudo find / -name "pg_config" -print

A resposta é /Library/PostgreSQL/9.1/bin/pg_config em minha configuração (MAC Maverick)

Em seguida, tente instalar algo como abaixo

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

se isso não funcionar, tente verificar de que maneira você instalou o postgresql

brew / mac port / setup

então você tem que tentar a opção relevante para o mesmo.

Obrigado.

RAM

Rameshwar Vyevhare
fonte
0

Eu estava com o mesmo problema, essa foi a solução que encontrei.

Se você executar brew doctor, ele dirá que provavelmente você instalou algo sem fermentar que alterou as permissões em algumas pastas e, portanto, você precisa alterar as permissões de volta para você nessa pasta.

No interior /usr/local/share/man, o que você pode fazer é o seguinte:

sudo chown [yourusername] man7

E depois:

brew link postgres

Espero que ajude!

Gustavo Semião-Lobo
fonte
0

Da mesma forma, após instalar o 'pacote de atualização' do Mavericks, estava gerando um erro no pg gem, que só é usado 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 correção era apenas 'preparar a desinstalação do postgresql' e, em seguida, 'preparar a instalação do postgresql'. Depois disso, consegui imediatamente executar 'atualização de pacote' com sucesso

Shannon Perkins
fonte
0
sudo su 

então

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

trabalhou em 10.10.2

Keaton Burleson
fonte
0

Se depois de tentar tudo aqui ele ainda não instalar, tente abrir o Xcode e aceitar o contrato de licença.

Hattenn
fonte
0

Para mim, a mensagem de erro era assim:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Como mostra a mensagem de erro, ele está tentando executar o comando / script "pg_config". Portanto, basta adicioná-lo ao caminho de onde estiver a instalação do Postgres. No meu caso, eu fiz:

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

então

bundle

É isso aí.

paneer Tikka
fonte
-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
MDD
fonte
Uma pequena explicação seria bom, para evitar que isso se perdesse no dilúvio das outras 19 respostas.
Brad Koch