szyny i libpq-dev nieprzyjemne zależności

12

Nie wiem, czy to pytanie należy tutaj, ale spróbuję. Cześć. Na moim komputerze korzystam z podwójnego rozruchu systemu Ubuntu 11.10 z Windows Vista. Na Ubuntu zainstalowałem RVM, Rails Gem i PostgreSQL (serwer Postgres, klient i inne pakiety, takie jak libpq5, ponieważ zainstalowałem go przez Software Center).

Próbuję wdrożyć moją aplikację na Heroku, ale wygląda na to, że muszę zainstalować pg gem. Próbowałem go zainstalować, ale zamiast tego dostałem ten błąd:

BŁĄD: nie udało się zbudować natywnego rozszerzenia gem.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb sprawdzanie pg_config ... tak

Używanie wartości konfiguracji z / usr / bin / pg_config

Musisz zainstalować postgresql-server-dev-XY do zbudowania rozszerzenia po stronie serwera lub libpq-dev do zbudowania aplikacji po stronie klienta. Musisz zainstalować postgresql-server-dev-XY do zbudowania rozszerzenia po stronie serwera lub libpq-dev do zbudowania aplikacji po stronie klienta.

sprawdzanie libpq-fe.h ... * extconf.rb nie powiodło się *

Po przeszukaniu google i stackoverflow wiele osób stwierdziło, że należy zainstalować libpq-dev. Próbowałem za pośrednictwem centrum oprogramowania, ale nie udało mi się zaliczyć zależności. Próbowałem przez apt-get, powiedziało, że potrzebuję libkrb5-dev i krb5-multidev. Próbowałem sudo apt-get install libpq-dev libkrb5-dev krb5-multidevi otrzymałem to:

Następujące pakiety mają niezaspokojone zależności: krb5-multidev:

Zależy: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1), ale należy zainstalować 1.9.1 + dfsg-1ubuntu2.1

Zależy: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1), ale należy zainstalować 1.9.1 + dfsg-1ubuntu2.1

Zależy: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1), ale należy zainstalować 1.9.1 + dfsg-1ubuntu2.1. E: Nie można rozwiązać problemów, trzymałeś uszkodzone pakiety.

Ale mam już libkrb5-3, libk5crypto3 i libgssapi-krb5-2 (wszystkie z wersją 1.9.1 + dfsg-1ubuntu2.1) w moim systemie! Myślę, że może potrzebna jest wersja 1.9.1 + dfsg-1ubuntu1. Więc może najpierw muszę usunąć pakiety 1.9.1 + dfsg-1ubuntu2.1. Czy uważasz, że mogę go bezpiecznie usunąć? Próbowałem usunąć jeden z nich, ale centrum oprogramowania ostrzega mnie, że usunie także postgres, openssl-client, smbclient, cup i wiele innych pakietów.

Co powinienem zrobić, aby rozwiązać ten problem? I czy pg gem jest naprawdę konieczny do zainstalowania na moim komputerze lokalnym, aby stworzyć aplikację Railsową z postgres jako dbms? Czy istnieje sposób na „przekazanie” odpowiedzialności za dołączenie pg gem do heroku?

PatrixCR
źródło

Odpowiedzi:

8

Prawdziwym rozwiązaniem jest, jak słusznie wskazał Amit Patel , aby zainstalowaćlibpq-dev


Oto obejście problemu, jeśli nie można skonfigurować pg na swoim komputerze programistycznym. Możesz używać sqlite na swoim komputerze lokalnym i pg w Heroku. Oto, co powinieneś mieć w swoim Gemfile

group :production do
  gem 'pg'
end

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

I użyj tego polecenia do zainstalowania pakietu, aby zignorować klejnoty produkcyjne:

bundle install --without production

Należy pamiętać, że nie zaleca się posiadania tego samego środowiska w maszynach produkcyjnych i programistycznych.

Arash Badie Modiri
źródło
Tak, to poprawna odpowiedź. +1, robię to teraz cały czas.
jrg
@jrg, czy robisz to? Pytam, bo heroku mówi „nie jest zalecane”.
PatrixCR
Heroku tego nie zaleca, ponieważ generalnie chcesz mieć taką samą env programistyczną jak serwer - jednak dopóki używasz ActiveRecord lub DataMapper i nie piszesz surowego SQL, powinieneś być w porządku przez 99% czasu. :)
jrg
1
@PatrixCR nie, heroku zrobi to za ciebie.
jrg
1
Korzystanie z narzędzia sqlite jest obejściem. Jakie jest zatem rozwiązanie?
Amit Patel,
32

Mam dzisiaj ten sam problem. Śledziłem komunikat Musisz zainstalować postgresql-server-dev-XY do zbudowania rozszerzenia po stronie serwera lub libpq-dev do zbudowania aplikacji po stronie klienta. Ponownie zainstalowałem aplikację libpq-dev i bundle rails, a błąd zniknął.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
źródło
2
To lepsze rozwiązanie, jeśli chcesz wykonać kopię lustrzaną postgres na swoim komputerze programistycznym, pracował dla mnie.
Collin White,