Rails & Libpq-Dev böse Abhängigkeiten

12

Ich weiß nicht, ob diese Frage hierher gehört, aber ich werde es versuchen. Hallo. Ich verwende Ubuntu 11.10 Dual-Boot mit Windows Vista auf meinem Computer. Unter Ubuntu habe ich RVM, Rails Gem und PostgreSQL (den Postgres-Server, den Client und andere Pakete wie libpq5, weil ich es über das Software Center installiert habe) installiert.

Ich versuche, meine App auf Heroku bereitzustellen, aber es scheint, als müsste ich pg gem installieren . Ich habe versucht, es zu installieren, habe aber stattdessen folgenden Fehler erhalten:

FEHLER: Fehler beim Erstellen der nativen Gem-Erweiterung.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb nach pg_config suchen ... yes

Verwenden von Konfigurationswerten aus / usr / bin / pg_config

Sie müssen postgresql-server-dev-XY zum Erstellen einer serverseitigen Erweiterung oder libpq-dev zum Erstellen einer clientseitigen Anwendung installieren. Sie müssen postgresql-server-dev-XY zum Erstellen einer serverseitigen Erweiterung oder libpq-dev zum Erstellen einer clientseitigen Anwendung installieren.

Überprüfung auf libpq-fe.h ... * extconf.rb fehlgeschlagen *

Nach einer Weile in google & stackoverflow sagten viele Leute, dass libpq-dev installiert werden muss. Ich habe versucht, über Software-Center, aber nicht auf ungedeckte Abhängigkeiten zu tun. Ich habe es über apt-get versucht, es hieß, ich brauche libkrb5-dev und krb5-multidev. Ich habe es versucht sudo apt-get install libpq-dev libkrb5-dev krb5-multidevund habe folgendes bekommen:

Die folgenden Pakete haben nicht erfüllte Abhängigkeiten: krb5-multidev:

Hängt ab von: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) aber 1.9.1 + dfsg-1ubuntu2.1 muss installiert werden

Hängt ab von: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) aber 1.9.1 + dfsg-1ubuntu2.1 soll installiert werden

Abhängig von: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1), aber 1.9.1 + dfsg-1ubuntu2.1 muss installiert werden

Aber ich habe bereits libkrb5-3, libk5crypto3 und libgssapi-krb5-2 (alle mit Version 1.9.1 + dfsg-1ubuntu2.1) auf meinem System! Ich denke, vielleicht ist die benötigte Version 1.9.1 + dfsg-1ubuntu1. Vielleicht muss ich zuerst die Pakete 1.9.1 + dfsg-1ubuntu2.1 entfernen. Glaubst du, es ist sicher für mich, es zu entfernen? Ich habe versucht, eines davon zu entfernen, aber das Software Center warnt mich, dass es auch Postgres, OpenSSL-Client, Smbclient, Cups und viele andere Pakete entfernen wird.

Was soll ich tun, um das Problem zu beheben? Und ist es wirklich notwendig, pg gem auf meinem lokalen Rechner zu installieren, um eine Rails-App mit postgres als DBMS zu erstellen? Gibt es eine Möglichkeit, die Verantwortung dafür zu übernehmen, stattdessen pg gem an heroku zu übergeben?

PatrixCR
quelle

Antworten:

8

Die eigentliche Lösung ist, wie von Amit Patel richtig ausgeführt , die Installationlibpq-dev


Hier ist eine Problemumgehung, wenn Sie pg nicht auf Ihrem Entwicklungscomputer einrichten konnten. Sie können sqlite auf Ihrem lokalen Rechner und pg in Heroku verwenden. Hier ist, was Sie in Ihrem Gemfile haben sollten

group :production do
  gem 'pg'
end

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

Verwenden Sie diesen Befehl zum Installieren des Bundles, um die Produktions-Gems zu ignorieren:

bundle install --without production

Bitte beachten Sie, dass es nicht empfehlenswert ist, in Produktions- und Entwicklungsmaschinen nicht die gleiche Umgebung zu haben.

Arash Badie Modiri
quelle
Ja, das ist die richtige Antwort. +1, das mache ich jetzt die ganze Zeit.
jrg
@jrg Treten dabei Probleme auf? Ich frage, weil Heroku sagt "es ist nicht zu empfehlen".
PatrixCR
Heroku rät davon ab, da Sie im Allgemeinen dieselbe Entwicklungsumgebung wie der Server verwenden möchten. Solange Sie jedoch ActiveRecord oder DataMapper verwenden und kein unformatiertes SQL schreiben, sollten Sie in 99% der Fälle in Ordnung sein. :)
jrg
1
@ MatrixCR Nein, Heroku wird das für Sie tun.
jrg 20.02.12
1
Die Verwendung von SQLite ist eine Problemumgehung. Was ist dann die Lösung?
Amit Patel
32

Ich habe heute das gleiche Problem. Ich verfolgte Nachricht Sie müssen postgresql-server-dev-XY installieren, um eine serverseitige Erweiterung zu erstellen, oder libpq-dev, um eine clientseitige Anwendung zu erstellen. Also installierte libpq-dev und Bundle Rails App erneut und der Fehler verschwand.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
quelle
2
Dies ist eine bessere Lösung, wenn Sie Postgres auf Ihrem Entwicklungscomputer spiegeln möchten, der für mich gearbeitet hat.
Collin White