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.