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
Rohit
fonte
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:

14

Respondida aqui: Não é possível instalar o pg gem no Windows

Não existe uma versão nativa do Windows da última versão da página (0.10.0) lançada ontem, mas se você instalar a 0.9.0, ela deverá instalar os binários sem problemas.

Nikita Barsukov
fonte
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
Devaroop
fonte
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

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

Flaviu
fonte
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/
cregox
fonte
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
Lasse Skindstad Ebert
fonte
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
Zainal
fonte
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.

DuArme
fonte
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.

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

Jones Agyemang
fonte
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.

Winfield
fonte
3

Para usuários de Mac

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

Isso deve fazer o truque

Ronak Jain
fonte
3

Use com ARCHbandeira.

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

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

Aman Chhabra
fonte
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
SAIDI Belkacem
fonte
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
zee
fonte
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

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

cristão
fonte
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'
Nuri
fonte
1

No Mac brew install postgresENTÃObundle install

Yar HTUT
fonte
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

revskill
fonte