Rails 3 - não é possível instalar o pg gem


98

Quando tento executar o bundle (instalação do bundle), sempre consigo

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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.

Provided configuration options:
    --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/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Eu uso Mac OS X 10.6, a versão do PostgreSQL instalado é 9.1. Descobri que o problema está no libpq-dev , como posso instalar / consertar isso?


2
como você instalou o postgres no seu mac?
shingara

1

instalador on_click? Flink? ou MacPort?
shingara

Tentei instalar desta forma:, sudo port install libpq-devmas outro problema - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Isso é terrível, ainda há alguns problemas ...
user984621

1
Veja esta pergunta: [aqui] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Respostas:


78

Conforme declarado em seu log de erros, você precisa passar o caminho para o pg_config. Tente instalar a gema usando:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Se você não tiver certeza de onde está seu pg_config e presumindo que está no Linux ou Mac, pode executar o seguinte comando:

which pg_config

Seu pg-config pode estar em locais diferentes dependendo de como você instalou o postgres.


Como uma nota, o pacote binário do site Postgres não contém cabeçalhos de desenvolvimento ou o pg_configprograma.
tadman

3
O pacote binário a partir daqui: enterprisedb.com/products-services-training/pgdownload#osx certamente faz contêm pg_config(por exemplo, a /Library/PostgreSQL/9.1/bin/pg_configde 9.1.x) e os cabeçalhos de desenvolvimento. É o que uso para testar a pggema em desenvolvimento.
Michael Granger

8
Não which pg_configseria mais rápido do que find / -name pg_config?
Justin D.

Fiz um pequeno ajuste em seus argumentos de linha de comando. Substituir a versão pela atual deve funcionar bem. Aqui está minha linha de comando: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
No OSX, você também pode usar brew para obter os cabeçalhos via brew install libpqxxe tudo correrá bem.
Vetsin

99

se você estiver executando no Linux, pode estar interessado no que funcionou para mim:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

Então

gem install pg

então

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
obrigado, como é no meu caso - não há necessidade de executar bundle gem install pg
valk de

21
Não é adequado para OS X.
dfrankow

1
Trabalhou para mim em novembro de 2013 executando o Ubuntu 13.04!
Starkers

por que isso tem tantos votos positivos quando é claramente para o sistema operacional errado?
sevenseacat

1
@sevenseacat indica claramente o sistema operacional no qual deve ser usado. E, claramente, muitas pessoas com sistemas operacionais Linux estão encontrando essa resposta quando pesquisam esse problema.
EE33

57

Se estiver usando Postgress.app , você vai querer acessar suas ferramentas de linha de comando . Digite a seguinte linha em seu terminal ou perfil PATH :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgagora deve funcionar. (Isto é o que funcionou para mim.)

Nota O caminho de novas versões se parece com:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
Muito obrigado! Passei meia hora mexendo em coisas que não funcionaram e finalmente encontrei isso enterrado aqui. : D
Peter Brown

1
Ótima solução que não requer cerveja.
lucian303

7
Esteja ciente de que o patch Postgre.app mudou na versão 93. agora é: /Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
Isso funcionou para mim, embora meu compartimento estivesse em um lugar muito diferente -> /Library/PostgreSQL/9.3/bin
Jeremias

5
Isso é agora - a /Applications/Postgres.app/Contents/Versions/9.3/binpartir de 9.3.5 se você estiver usando o Postgres.app
Ashley


12

Pesquise libpq:

brew search libpq

Deve produzir libpqxx

Em seguida, tente instalá-lo:

brew install libpqxx

8

Você só precisa instalar libpq-dev:

sudo apt-get install libpq-dev

Então, a gem deve instalar perfeitamente.


8
Não é adequado para OS X.
dfrankow

No meu caso, apenas isso ajudou. Obrigado!
kovpack

7

Siga as instruções de pós-instalação: http://postgresapp.com/documentation/configuration-ruby.html

Para instalar o pg gem, certifique-se de configurar seu $ PATH corretamente (conforme especificado em http://postgresapp.com/documentation/cli-tools.html ) e execute

sudo ARCHFLAGS="-arch x86_64" gem install pg

Eu recomendo fortemente a leitura de ambas as páginas. Apenas os li e perdi 1 hora da minha vida. Leia-os, problema resolvido.


Funciona no OSX 10.9.5, ruby ​​padrão versão 2.0, rbenv local versão 1.9.3.
jlucasps de

Funciona no OSX 10.11 AGRADECIMENTOS
Yarin

Funciona no OSX 10.11.4. Obrigado!!
Martyn Chamberlin de

3

O problema que tive foi que, por algum motivo, ele estava tentando compilar com /usr/bin/gcc-4.2. Descobri isso alterando try_cpp em mkmf.rb (que vi no rastreamento de pilha) para gerar uma exceção com a linha de compilação que estava falhando.

Eu vinculei o gcc ao gcc-4.2 e funcionou:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Por que ele estava tentando usar o gcc-4.2? Nenhuma idéia.

A linha de compilação real:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

Eu tive o mesmo problema, mas meu Postgres foi instalado em

/Library/PostgreSQL/9.3

Atualizado o ~ / .bash_profile adicionando:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Abra um novo terminal, execute bundle updatee também funcionou para mim. Obrigado Ari.


mas para eu funcionar preciso verificar a versão e exportar PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

Você pode definir uma opção de configuração de construção bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_confige usar gem install pgsem quaisquer opções (o caminho para pg_config pode ser diferente para você, este é para o Postgresapp 9.3.5.0)


1

Eu tive o mesmo problema na minha máquina openSUSE13.1 KDE. Antes desse problema eu encontrei eu tinha instalado apenas os pacotes postgresqle postgresql-serverusando o zyppercomando. Em seguida, instalei novamente mais 2 pacotes:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Aí, corri de novo bundle install, e sucesso !!!



0

Primeiro, desinstale qualquer versão do Homebrew. A opção --force faz com que desinstale todas as versões.

brew rm postgresql --force

Altere os caminhos de acordo com sua versão.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Edite / etc / profile e exclua quaisquer linhas que façam referência a "postgres".

nano /etc/profile

Instale PostgresSQL

brew update
brew install postgresql

Instale o PG GEM

gem install pg

É isso aí. Saudações.


0

Você pode primeiro verificar se possui um arquivo postrgresql em seu terminal, acessando o arquivo lib. indo cd ~ / opt / local / lib / e, em seguida, digite ls e o botão Enter. Isso mostrará uma lista de todos os arquivos localizados no diretório lib.

1.se você não tiver postreseql você pode fazer o download através do macports. sudo port install postgresql93 @ 9.3.2_1

Agora volte para a pasta que você está tentando agrupar a instalação

  1. fazendo sua pg funcionar com o arquivo postgesql que você baixou ou baixou gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

agora execute o pacote de instalação



0

O que funcionou para mim no El Capitan foi atualizar o ruby ​​do padrão do sistema para 2.3.1. Pareceu encontrar as bibliotecas corretas que o pggem precisava.

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.