rails e dependências desagradáveis ​​da libpq-dev

12

Não sei se essa pergunta pertence aqui, mas vou tentar. Oi. Estou executando o ubuntu 11.10 de inicialização dupla com o Windows Vista na minha máquina. No Ubuntu, instalei o RVM, o rails gem e o PostgreSQL (o servidor postgres, o cliente e outros pacotes como o libpq5, porque eu o instalei via Software Center).

Estou tentando implantar meu aplicativo no heroku, mas parece que preciso instalar o pg gem. Tentei instalá-lo, mas recebi este erro:

ERRO: falha ao criar a extensão nativa da gema.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb verificando pg_config ... sim

Usando valores de configuração de / usr / bin / pg_config

Você precisa instalar o postgresql-server-dev-XY para construir uma extensão do servidor ou libpq-dev para construir um aplicativo do lado do cliente. Você precisa instalar o postgresql-server-dev-XY para construir uma extensão do servidor ou libpq-dev para construir um aplicativo do lado do cliente.

verificação de libpq-fe.h ... * extconf.rb falhou *

Depois de pesquisar no google e stackoverflow por um tempo, muitas pessoas disseram que o libpq-dev precisa ser instalado. Eu tentei, através do centro de software, mas não consigo fazer dependências não atendidas. Eu tentei pelo apt-get, ele disse que eu precisava do libkrb5-dev e do krb5-multidev. Eu tentei sudo apt-get install libpq-dev libkrb5-dev krb5-multideve consegui isso:

Os seguintes pacotes têm dependências não atendidas: krb5-multidev:

Depende: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) mas 1.9.1 + dfsg-1ubuntu2.1 deve ser instalado

Depende: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) mas 1.9.1 + dfsg-1ubuntu2.1 deve ser instalado

Depende: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1) mas 1.9.1 + dfsg-1ubuntu2.1 deve ser instalado. E: Incapaz de corrigir problemas, você mantém pacotes quebrados.

Mas eu já tenho libkrb5-3, libk5crypto3 e libgssapi-krb5-2 (todos com a versão 1.9.1 + dfsg-1ubuntu2.1) no meu sistema! Eu acho que talvez a versão necessária seja 1.9.1 + dfsg-1ubuntu1. Então, talvez eu precise remover os pacotes 1.9.1 + dfsg-1ubuntu2.1 primeiro. Você acha que é seguro removê-lo? Tentei remover um deles, mas o software center me alerta que também removerá o postgres, openssl-client, smbclient, cups e muitos outros pacotes.

O que devo fazer para resolver isso? E, é realmente necessário instalar o pg gem na minha máquina local para criar o aplicativo rails com o postgres como o dbms? Existe uma maneira de "entregar" a responsabilidade de incluir a pg gem no heroku?

PatrixCR
fonte

Respostas:

8

A solução real é, como corretamente apontado por Amit Patel , instalarlibpq-dev


Aqui está uma solução alternativa se você não conseguiu configurar a página na sua máquina de desenvolvimento. Você pode usar o sqlite na sua máquina local e a página no Heroku. Aqui está o que você deve ter no seu Gemfile

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

E use este comando para instalar o pacote configurável para ignorar as gemas de produção:

bundle install --without production

Lembre-se de que não é recomendado o mesmo ambiente nas máquinas de produção e desenvolvimento.

Arash Badie Modiri
fonte
Sim, esta é a resposta correta. +1, faço isso o tempo todo agora.
jrg
@jrg você tem algum problema ao fazer isso? Eu pergunto porque heroku diz "não é recomendado".
PatrixCR
Heroku não o recomenda, porque geralmente você deseja ter o mesmo ambiente de desenvolvimento que o servidor - no entanto, desde que você esteja usando o ActiveRecord ou o DataMapper e não esteja gravando SQL bruto, deve ficar bem 99% do tempo. :)
JRG
1
@PatrixCR não, a heroku fará isso por você.
JRG
1
Usar o sqlite é uma solução alternativa. Qual é a solução então?
Amit Patel
32

Eu tenho o mesmo problema hoje. Eu segui a mensagem Você precisa instalar o postgresql-server-dev-XY para criar uma extensão do lado do servidor ou libpq-dev para criar um aplicativo do lado do cliente. Então, instalei o libpq-dev e o bundle rails app novamente e o erro desapareceu.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
fonte
2
Esta é uma solução melhor se você quiser espelhar o postgres em sua máquina de desenvolvimento, funcionou para mim.
Collin White