rails et dépendances désagréables libpq-dev

12

Je ne sais pas si cette question appartient ici, mais je vais essayer. Salut. J'utilise ubuntu 11.10 dual-boot avec windows vista sur ma machine. Sur Ubuntu, j'ai installé RVM, rails gem et PostgreSQL (le serveur postgres, le client et d'autres packages comme libpq5, car je l'ai installé via le Centre logiciel).

J'essaie de déployer mon application sur Heroku, mais il semble que je doive installer pg gem. J'ai essayé de l'installer, mais j'ai obtenu cette erreur à la place:

ERREUR: échec de la construction de l'extension native de gemme.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb vérification de pg_config ... oui

Utilisation des valeurs de configuration de / usr / bin / pg_config

Vous devez installer postgresql-server-dev-XY pour créer une extension côté serveur ou libpq-dev pour créer une application côté client. Vous devez installer postgresql-server-dev-XY pour créer une extension côté serveur ou libpq-dev pour créer une application côté client.

vérification de libpq-fe.h ... * échec de extconf.rb *

Après avoir recherché Google et stackoverflow pendant un certain temps, beaucoup de gens ont dit que libpq-dev devait être installé. J'ai essayé, via le centre logiciel, mais je ne fais pas de dépendances non satisfaites. J'ai essayé via apt-get, il a dit que j'avais besoin de libkrb5-dev et krb5-multidev. J'ai essayé sudo apt-get install libpq-dev libkrb5-dev krb5-multidevet j'ai obtenu ceci:

Les packages suivants ont des dépendances non satisfaites: krb5-multidev:

Dépend: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) mais 1.9.1 + dfsg-1ubuntu2.1 doit être installé

Dépend: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) mais 1.9.1 + dfsg-1ubuntu2.1 doit être installé

Dépend: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1) mais 1.9.1 + dfsg-1ubuntu2.1 doit être installé E: Impossible de corriger les problèmes, vous avez conservé des paquets cassés.

Mais j'ai déjà libkrb5-3, libk5crypto3 et libgssapi-krb5-2 (tous avec la version 1.9.1 + dfsg-1ubuntu2.1) sur mon système! Je pense que la version requise est peut-être 1.9.1 + dfsg-1ubuntu1. Donc, je dois peut-être d'abord supprimer les packages 1.9.1 + dfsg-1ubuntu2.1. Pensez-vous que je peux le supprimer en toute sécurité? J'ai essayé de supprimer l'un d'eux, mais le centre logiciel me prévient qu'il supprimera également postgres, openssl-client, smbclient, cups et de nombreux autres packages.

Que dois-je faire pour résoudre ce problème? Et, pg gem est-il vraiment nécessaire d'être installé sur ma machine locale pour créer une application rails avec postgres comme dbms? Existe-t-il un moyen de "remettre" la responsabilité d'inclure pg gem à heroku à la place?

PatrixCR
la source

Réponses:

8

La vraie solution est, comme l'a correctement souligné Amit Patel , d'installerlibpq-dev


Voici une solution de contournement si vous n'avez pas pu configurer pg sur votre machine de développement. Vous pouvez utiliser sqlite sur votre machine locale et pg dans Heroku. Voici ce que vous devriez avoir dans votre Gemfile

group :production do
  gem 'pg'
end

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

Et utilisez cette commande pour installer le bundle pour ignorer les gemmes de production:

bundle install --without production

N'oubliez pas qu'il n'est pas recommandé de ne pas avoir le même environnement dans les machines de production et de développement.

Arash Badie Modiri
la source
Oui, c'est la bonne réponse. +1, je fais ça tout le temps maintenant.
jrg
@jrg rencontrez-vous un problème en faisant cela? Je demande parce que heroku dit "ce n'est pas recommandé".
PatrixCR
Heroku ne le recommande pas parce que généralement vous voulez avoir le même environnement de développement que le serveur - cependant, tant que vous utilisez ActiveRecord ou DataMapper et que vous n'écrivez pas de SQL brut, vous devriez vous en sortir 99% du temps. :)
jrg
1
@PatrixCR non, heroku le fera pour vous.
jrg
1
L'utilisation de sqlite est une solution de contournement. Quelle est la solution alors?
Amit Patel
32

J'ai le même problème aujourd'hui. J'ai suivi le message Vous devez installer postgresql-server-dev-XY pour créer une extension côté serveur ou libpq-dev pour créer une application côté client. Ainsi libpq-dev et bundle rails app installés à nouveau et l'erreur a disparu.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
la source
2
C'est une meilleure solution si vous souhaitez mettre en miroir des postgres sur votre machine de développement, a fonctionné pour moi.
Collin White