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?

user984621
fonte
2
como você instalou o postgres no seu mac?
shingara
1
desta forma
user984621
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.

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

EE33
fonte
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
Ari
fonte
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
jlucasps
fonte
8

Você só precisa instalar libpq-dev:

sudo apt-get install libpq-dev

Então, a gem deve instalar perfeitamente.

Travis Reeder
fonte
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.

CGK
fonte
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)
dfrankow
fonte
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.

Trang Tung Nguyen
fonte
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)

Konstantine Kalbazov
fonte
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 !!!

Arup Rakshit
fonte
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.

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

user3256740
fonte
0

No Fedora:

dnf install postgresql-devel
Mayuresh Srivastava
fonte
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.

Abe Petrillo
fonte