Como instalar o pg gem do PostgreSQL no Ubuntu?


292

Estou tentando instalar a pg gem do PostgreSQL para Ruby.

Eu emiti o seguinte comando:

gem install pg

Eu instalei o Ruby 1.9.2 usando RVM.

O comando acima mostra o seguinte erro.

O erro é:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)

*** 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=/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

Não sei qual é o erro ...


1
apt install postgresql-server-dev-allpara o Ubuntu 18.04.
Richard Peck

Respostas:


678

Você precisa instalar o pacote dev do postgreSQL com o cabeçalho do PostgreSQL

sudo apt-get install libpq-dev

Eu fiz isso de acordo com a sua sugestão ... o obter a seguinte necessidade de obter 0B de arquivos. Após descompactar, 5378kB será liberado. Você quer continuar? [S / n /?] S Gravando informações de estado estendidas ... Concluído (Lendo arquivos e diretórios do banco de dados ... 166183 atualmente instalados.) Removendo o bisonte ... Removendo a libnss3-dev ... Removendo a libnspr4-dev ... Removendo libqt4-core ... Removendo a libqt4-test ... Removendo a libsqlite3-dev ... Processando gatilhos para o man-db ..
palani

3
Para aqueles que realmente novo para o Ubuntu como me, mas realmente novo uso sudo apt-get install aptitudeprimeiro :)
Haris Krajina

1
tentei todos os tipos de combinações. mesmo depois de reinstalar o postgres e o libpq. sem sorte .. ainda o mesmo problema
Krishnaprasad Varma

5
Para distros com sabor Cent / RedHat, o pacote que você vai querer éyum install postgresql-devel
Kyril

1
Sinto que isso pode não estar funcionando para algumas pessoas devido às versões do Ubuntu. Isso está falhando para mim no 13.04 com o Postgres 9.1
Rebs

40

Depois de ler e debater por 2 dias e tentar muitas coisas encontradas em outras notas, a única linha a seguir foi a cura para mim no Ubuntu Lucid 10.04 misturada com alguns pacotes Maverick e RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, rails 3.0.1, postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

o resultado:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{sim - finalmente sucesso} !! ! observe que a saída da execução de pg_config não possui o item -lpq na variável LIBS na minha instalação do Ubuntu / Postresql !!

e por que a mudança de pq para pg em certos lugares - confuso para iniciantes ??

o que ainda não entendo é o conjunto duplo de - e - com (opção, mas estou muito além da minha profundidade)


2
o '-' é comumente usado para separar os parâmetros para o primeiro comando a partir do segundo, neste caso, o script configure do extmod
Timothy Meade

1
Obrigado. Sua solução foi perfeita.
Sid

muito obrigado por compartilhar esta solução. ficou preso nisso por um dia. feliz por ter encontrado este post.
28512 whizcreed

30

Estou no Ubuntu 12.10 e executando este comando:

apt-get install libpq-dev

me ajudou - depois que correu gem instalar pg -v "0.14.1", e tudo de bom agora



25

No Ubuntu, isso funciona para mim, espero ajudá-lo:

sudo apt-get install libpq-dev

e

gem install pg  --   --with-pg-lib=/usr/lib 

24

A instalação do libpq-dev não funcionou para mim. Eu também precisava instalar o build-essential

sudo apt-get install libpq-dev build-essential

16

Solução simples para usuários do ubuntu ...

Primeiro desinstale todos os pacotes do postgres, depois execute essas vírgulas ...

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

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

Em seguida, execute 'bundle install'. Tudo vai ficar bem. Tenha um bom dia!


1
Se as pessoas estiverem curiosas sobre como remover todos os pacotes do postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (ou qualquer versão do postgres que você possui).
21715 Tommyixi

9

Para usuários .RVM, será melhor:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

funcionou para mim (depois que eu vi a versão jdupont)


7

Se você possui o libpq-dev instalado e ainda está tendo esse problema, é provável que seja devido a versões conflitantes do libssl e dos amigos do OpenSSL - a versão do sistema Ubuntu em / usr / lib (na qual o libpq é desenvolvido) e uma segunda versão do RVM instalada em $ HOME / .rvm / usr / lib (ou / usr / local / rvm / usr / lib, se for uma instalação do sistema). Você pode verificar isso renomeando temporariamente $ HOME / .rvm / usr / lib e vendo se "gem install pg" funciona.

Para resolver o problema, faça o rvm reconstruir usando as bibliotecas OpenSSL do sistema (pode ser necessário remover manualmente libssl. * E libcrypto. * Do dir rvm / usr / lib):

rvm reinstall 1.9.3 --with-openssl-dir=/usr

Isso finalmente resolveu o problema para mim no Ubunto 12.04.


Obrigado por esta resposta! Quanto mais novo o Ubuntu e mais velho o ruby, maior a probabilidade de ocorrer uma incompatibilidade do OpenSSL.
Mikeycgto

Nada mais funcionou, exceto por isso! Muito obrigado @ mike-blackwell. Eu quase tinha perdido a esperança antes de você vir ao resgate.
varagrawal


5

Isso resolveu o problema para mim no Ubuntu 12.04 depois que todas as sugestões aqui falharam.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

Minha solução foi quase a mesma; Estou usando o rbenv e o que funcionou para mim foi: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Não precisei especificar uma versão.
Dan Tenenbaum

3

Eu estava tentando configurar um projeto Rails no meu Ubuntu 16.04 recém-instalado. Corri para o mesmo problema ao executar o pacote. Corrida

sudo apt-get install aptitude

Seguido por

sudo apt-get install libpq-dev

Resolvi isso para mim.


3

Para quem ainda está tendo problemas após tentar todas as respostas nesta página, o seguinte (finalmente) funcionou:

sudo apt-get install libgmp3-dev
gem install pg

Isso foi depois feito tudo o que foi mencionado nesta página.

postgresql 9.5.8
Ubuntu 16.10


Era isso que eu precisava no Ubuntu 18.04
Weston Ganger

1

Eu tive o mesmo problema e tentei muitas variantes diferentes. Após algumas tentativas, consegui sudo gem install, mas ainda tenho problemas para instalá-lo sem o sudo.
Finalmente, encontrei uma decisão - a reinstalação do rvm me ajudou. Provavelmente pode economizar tempo com outra pessoa.


1

Outra solução para esse problema é instalar o PostgreSQL usando o Homebrew / linuxbrew:

brew install postgresql

Por uma questão de hábito, não gosto de usar o sudo, a menos que seja necessário.


Homebrew é apenas para Mac.
Página Inicial

2
Há um fork do Linux.
21417 echristopherson em:

Se você não deseja instalar o PostgreSQL completo, o seguinte funcionou para mim:brew install libpq && brew link libpq --force
Andrew

1

Para aqueles que tentam instalar o Redmine, eu perdi sudo apt-get install ruby-all-dev depois de tentar todas as opções acima.

Sendo o erro inicial mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Outra opção é usar o Homebrew, que funciona no Linux e no macOS, para instalar apenas as bibliotecas de suporte:

brew install libpq

então

brew link libpq --force

(a --forceopção é necessária porque entra em conflito com a fórmula do postgres.)

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.