incapaz de instalar pg gem


217

Eu tentei usar, gem install pgmas parece não funcionar.

gem install pg dá esse erro

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe 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=C:/Ruby/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 C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out

3
Se você estiver em um Mac, siga este tutorial: matthew.mceachen.us/blog/...
Noah W. Smith

1
@NatchiQ link quebrado?
0112 de

no meu caso o log de erro disse que libpqnão foi encontrado, então eu instaladosudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Respostas:



388

Eu tive esse problema, isso funcionou para mim:

Instale o pacote postgresql-devel, isso resolverá o problema de pg_config ausente.

sudo apt-get install libpq-dev

139
Trabalhou para mim por apt-get install libpq-dev. Obrigado pela dica.
21711 Ryanmt

5
Confirmação, na página inicial do pg gem : "No Ubuntu, / usr / bin / pg_config é fornecido pelo pacote libpq-dev."
Marque Berry

17
e o mac?
Fivell

23
@Fivell Tarde do jogo com a resposta aqui, mas se você tiver o Homebrew instalado, brew install postgresqlvocê receberá os pacotes necessários.
Alex LaFroscia

19
@Fivell try brew install postgresqlon mac
Mahattam

91

O problema é dependência da gema, portanto, antes de instalar o pg, verifique se você instalou "libpq-dev"

Sistemas Ubuntu:

sudo apt-get install libpq-dev

Sistemas RHEL:

yum instalar o postgresql-devel

Mac:

instalação do brew postgresql


7
A resposta para o Mac é verdadeira. É apenas porque não instalamos o PostgreSQL na máquina.
Hoang Le

No Centos 7, yum install postgresql-develresolvi meu erro relacionado ao pg_config para instalar o 'pg' .gem. A propósito, optei por usar o PostgreSQL 10 recém-lançado
Arthur

62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config


3
Isso me ajudou (no Centos 6.2)
TuK

14
Trabalhou para mim no OS X, mas com caminho para /Applications/Postgres.app/Contents/MacOS/bin/pg_config (eu tenho um autônomo Postgres.app)
Matt

10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config no yosemite com o Postgres App
twmulloy 11/02/2015

Trabalhou. Mas no Mac, precedendo com env ARCHFLAGS="-arch x86_64"foi um divisor de águas para mim.
Janusz Lenar

2
I utilizado gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configpara OSX 10,12
Tim Krins

37

@Winfield disse :

A pg gem requer que as bibliotecas do cliente postgresql se vinculem. Esse erro geralmente significa que ele não consegue encontrar suas bibliotecas do Postgres. Ou você não os tem instalado ou pode precisar passar --with-pg-dir=para a instalação do gem.

Mais do que isso, você só precisa --with-pg-config=instalá-lo.

Em um Mac

Se, por acaso, você também instalou o postgres através do pacote do site no mac, ele estará em algum lugar como /Applications/Postgres.app/Contents/Versions/9.3/bin.

Então, você o passa na instalação da gem:

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

Ou você define o PATH corretamente . Como isso pode ser demais, defina temporariamente o PATH:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

2
para versão específica:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland 24/03

Há uma pasta de link simbólico chamada latestdentro da pasta de conteúdo Postgres.app que é útil no caso de a 9.3 não ser mais enviada. gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
precisa

24

Eu não tinha o postgresql instalado, então apenas o instalei usando

sudo apt-get install postgresql postgresql-server-dev-9.1

no Ubuntu 12.04.

Isso resolveu.


Atualizar:

Use a versão mais recente:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

Corrigido o problema para mim, mas em um mac (com homebrew) eu tive que executar este comando:brew install postgresql
gMale 19/07/14

19

Isso funcionou no meu caso:

sudo apt-get install libpq-dev

Eu usei:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Trilhos 4.2.1

12

Se você estiver usando o Postgres.app no Mac, poderá resolver esse problema de uma vez por todas como este:

Em primeiro lugar gem uninstall pg, em seguida, editar o seu ~/.bash_profileou ~/.zshrcarquivo ou equivalente e adicione:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Então, bundle installe gem install pgambos devem funcionar conforme o esperado.


Obrigado, ele também funciona usando a exportação de caminho de bin do PostgreSQL # PostgreSQL instalada PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Benoit

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

substitua o 9.1 pela versão instalada no seu sistema.


1
Isso me ajudou em um mac, alguém sabe qual é o caminho padrão e como alterá-lo?
Steve

Funciona no OS X Maveric
Marek Kirejczyk 22/03

5

No Mac OS (El Capitano). Você pode simplesmente usar:brew install postgresql


1
Sim! Era tudo o que eu precisava! Instale no OS X limpo, sem Postgres.app
Lane Rettig

3

A pg gem requer que as bibliotecas do cliente postgresql se vinculem. Esse erro geralmente significa que ele não consegue encontrar suas bibliotecas do Postgres. Ou você não os tem instalado ou pode ser necessário passar o --with-pg-dir = para sua instalação do gem.


3

Para usuários de Mac

PATH=$PATH:/Library/PostgreSQL/9.4/bin/ gem install pg

Isso deve fazer o truque


3

Use com ARCHbandeira.

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

Isso resolveu o mesmo problema que você está tendo.


2

Eu tinha esse problema no Linux Mint (Maya) 13, e corrigi-o instalando o postgresql e o postgresql-server:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1

2

Independentemente do SO que você estiver executando, consulte o arquivo de logs do "Makefile"para ver o que está acontecendo, em vez de instalar cegamente as coisas.

No meu caso, MAC OS, o arquivo de log está aqui:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

Os logs indicaram que o arquivo make não pôde ser criado devido ao seguinte:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

Dentro do mkmf.log, você verá que não foi possível encontrar as bibliotecas necessárias para concluir a compilação.

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

Após a execução "brew install postgresql", posso ver todas as bibliotecas necessárias disponíveis:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes

2

Estou enfrentando esse problema irritante com o PG há anos. Eu criei essa essência para ajudar.

O comando a seguir sempre funciona para mim.

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

gist: https://gist.github.com/sharnie/5588340cf023fb177c8d


1

Eu tive que fazer isso no CentOS 5.8. A execução bundle installcontinuava causando problemas, pois eu não conseguia forçá-lo a usar uma versão específica do PG.

Também não posso yum erase postgresql postgresql-devel, devido a problemas de dependência (removeria php, http etc.)

A solução? Mess $ PATH temporariamente para dar preferência à atualização pgsql em vez da padrão:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

Basicamente, com os comandos acima, ele examinará /usr/pgsql-9.2/bin/pg_configantes do comando/usr/bin/pg_config


1

Se você estiver usando o jruby em vez do ruby, terá problemas semelhantes ao instalar o pg gem. Em vez disso, você precisa instalar o adaptador:

gem 'activerecord-jdbcpostgresql-adapter'


0

Basta ir aqui para ver se a sua versão pg suporta a plataforma Win32 e use este comando para instalar:

instalação do gem pg -v 0.14.1 --platform = x86-mingw32

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.