rel & dependensi buruk libpq-dev

12

Saya tidak tahu apakah pertanyaan ini ada di sini, tapi saya akan coba. Hai. Saya menjalankan ubuntu 11.10 dual-boot dengan windows vista di komputer saya. Di Ubuntu, saya telah menginstal RVM, rails gem, & PostgreSQL (server postgres, klien, & paket lain seperti libpq5, karena saya menginstalnya melalui Software Center).

Saya mencoba untuk menggunakan aplikasi saya di heroku, tetapi sepertinya saya perlu menginstal pg gem. Saya mencoba menginstalnya, tetapi malah mendapat kesalahan ini:

GALAT: Gagal membangun ekstensi asli permata.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb memeriksa pg_config ... ya

Menggunakan nilai konfigurasi dari / usr / bin / pg_config

Anda perlu menginstal postgresql-server-dev-XY untuk membangun ekstensi sisi-server atau libpq-dev untuk membangun aplikasi sisi klien. Anda perlu menginstal postgresql-server-dev-XY untuk membangun ekstensi sisi-server atau libpq-dev untuk membangun aplikasi sisi klien.

memeriksa libpq-fe.h ... * extconf.rb gagal *

Setelah mencari google & stackoverflow untuk sementara waktu, banyak orang mengatakan bahwa libpq-dev harus diinstal. Saya mencoba, melalui pusat perangkat lunak tetapi gagal lakukan untuk tidak memenuhi dependensi. Saya mencoba melalui apt-get, katanya saya perlu libkrb5-dev dan krb5-multidev. Saya mencoba sudo apt-get install libpq-dev libkrb5-dev krb5-multidev, dan mendapatkan ini:

Paket-paket berikut memiliki dependensi yang belum terpenuhi: krb5-multidev:

Tergantung: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) tetapi 1.9.1 + dfsg-1ubuntu2.1 harus diinstal

Tergantung: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) tetapi 1.9.1 + dfsg-1ubuntu2.1 harus diinstal

Tergantung: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1) tetapi 1.9.1 + dfsg-1ubuntu2.1 harus diinstal E: Tidak dapat memperbaiki masalah, Anda telah memegang paket yang rusak.

Tetapi saya sudah memiliki libkrb5-3, libk5crypto3, dan libgssapi-krb5-2 (semua dengan versi 1.9.1 + dfsg-1ubuntu2.1) di sistem saya! Saya pikir mungkin versi yang dibutuhkan adalah 1.9.1 + dfsg-1ubuntu1. Jadi, mungkin saya harus menghapus paket 1.9.1 + dfsg-1ubuntu2.1 terlebih dahulu. Apakah Anda pikir aman bagi saya untuk menghapusnya? Saya mencoba untuk menghapus salah satu dari mereka, tetapi pusat perangkat lunak memperingatkan saya bahwa itu juga akan menghapus postgres, openssl-client, smbclient, cangkir, dan banyak paket lainnya.

Apa yang harus saya lakukan untuk menyelesaikan ini? Dan, apakah pg gem benar-benar diperlukan untuk diinstal pada mesin lokal saya untuk membuat aplikasi rel dengan postgres sebagai dbms? Apakah ada cara untuk "menyerahkan" tanggung jawab untuk memasukkan permata pg ke heroku?

PatrixCR
sumber

Jawaban:

8

Solusi sebenarnya adalah, sebagaimana ditunjukkan dengan benar oleh Amit Patel , untuk menginstallibpq-dev


Ini adalah solusi jika Anda tidak dapat mengatur pg di mesin pengembangan Anda. Anda dapat menggunakan sqlite di mesin lokal Anda dan pg di Heroku. Inilah yang harus Anda miliki di Gemfile Anda

group :production do
  gem 'pg'
end

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

Dan gunakan perintah ini untuk menginstal bundel untuk mengabaikan permata produksi:

bundle install --without production

Harap diingat bahwa tidak memiliki lingkungan yang sama dalam mesin produksi dan pengembangan tidak dianjurkan.

Arash Badie Modiri
sumber
Yup, ini jawaban yang benar. +1, saya melakukan ini sepanjang waktu sekarang.
jrg
@ jrg apakah Anda mengalami masalah dengan melakukan ini? Saya bertanya karena heroku mengatakan "itu tidak dianjurkan".
PatrixCR
Heroku tidak merekomendasikan hal ini karena umumnya Anda ingin memiliki pengembangan yang sama dengan server - namun, selama Anda menggunakan ActiveRecord atau DataMapper dan Anda tidak menulis SQL mentah, Anda harus baik-baik saja 99% dari waktu. :)
jrg
1
@PatrixCR nggak, heroku akan melakukannya untuk Anda.
jrg
1
Menggunakan sqlite adalah solusi. Lalu apa solusinya?
Amit Patel
32

Saya mendapat masalah yang sama hari ini. Saya mengikuti pesan Anda harus menginstal postgresql-server-dev-XY untuk membangun ekstensi sisi-server atau libpq-dev untuk membangun aplikasi sisi klien. Jadi instal aplikasi libpq-dev dan bundle rails lagi dan kesalahannya hilang.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
sumber
2
Ini adalah solusi yang lebih baik jika Anda ingin mencerminkan postgres pada mesin pengembangan Anda, bekerja untuk saya.
Collin White