đường ray & libpq-dev phụ thuộc khó chịu


12

Tôi không biết câu hỏi này có thuộc về đây không, nhưng tôi sẽ chụp. Chào. Tôi đang chạy chương trình khởi động kép Ubuntu 11.10 với windows vista trên máy của mình. Trên Ubuntu, tôi đã cài đặt RVM, rails gem và & PostgreSQL (máy chủ postgres, máy khách và các gói khác như libpq5, vì tôi đã cài đặt nó qua Trung tâm phần mềm).

Tôi đang cố gắng triển khai ứng dụng của mình trên heroku, nhưng có vẻ như tôi cần cài đặt pg gem. Tôi đã cố gắng cài đặt nó, nhưng đã gặp lỗi này:

LRI: Không thể xây dựng phần mở rộng riêng của gem.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb kiểm tra pg_config ... có

Sử dụng giá trị cấu hình từ / usr / bin / pg_config

Bạn cần cài đặt postgresql-server-dev-XY để xây dựng tiện ích mở rộng phía máy chủ hoặc libpq-dev để xây dựng ứng dụng phía máy khách. Bạn cần cài đặt postgresql-server-dev-XY để xây dựng tiện ích mở rộng phía máy chủ hoặc libpq-dev để xây dựng ứng dụng phía máy khách.

kiểm tra libpq-fe.h ... * extconf.rb không thành công *

Sau khi tìm kiếm google & stackoverflow một thời gian, nhiều người nói rằng libpq-dev phải được cài đặt. Tôi đã thử, thông qua trung tâm phần mềm nhưng không thực hiện được các phụ thuộc chưa được đáp ứng. Tôi đã thử qua apt-get, nó nói rằng tôi cần libkrb5-dev và krb5-multidev. Tôi đã thử sudo apt-get install libpq-dev libkrb5-dev krb5-multidevvà nhận được điều này:

Các gói sau có phụ thuộc chưa được đáp ứng: krb5-multidev:

Phụ thuộc: libkrb5-3 (= 1.9.1 + dfsg-1ubfox1) nhưng 1.9.1 + dfsg-1ubfox2.1 sẽ được cài đặt

Phụ thuộc: libk5crypto3 (= 1.9.1 + dfsg-1ubfox1) nhưng 1.9.1 + dfsg-1ubfox2.1 sẽ được cài đặt

Phụ thuộc: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubfox1) nhưng 1.9.1 + dfsg-1ubfox2.1 sẽ được cài đặt E: Không thể sửa lỗi, bạn đã giữ các gói bị hỏng.

Nhưng tôi đã có libkrb5-3, libk5crypto3 và libgssapi-krb5-2 (tất cả đều có phiên bản 1.9.1 + dfsg-1ubfox2.1) trên hệ thống của tôi! Tôi nghĩ có lẽ phiên bản cần thiết là 1.9.1 + dfsg-1ubfox1. Vì vậy, có lẽ tôi phải loại bỏ các gói 1.9.1 + dfsg-1ubfox2.1 trước. Bạn có nghĩ rằng nó an toàn cho tôi để loại bỏ nó? Tôi đã cố gắng loại bỏ một trong số chúng, nhưng trung tâm phần mềm cảnh báo tôi rằng nó cũng sẽ xóa postgres, openssl-client, smbclient, cup và nhiều gói khác.

Tôi nên làm gì để giải quyết điều này? Và, pg gem có thực sự cần thiết để được cài đặt trên máy cục bộ của tôi để tạo ứng dụng rails với postgres như dbms không? Thay vào đó, có cách nào để "giao" trách nhiệm đưa pg gem vào heroku không?

Câu trả lời:


8

Giải pháp thực sự là, như Amit Patel đã chỉ ra , để cài đặtlibpq-dev


Đây là một cách giải quyết nếu bạn không thể thiết lập pg tại máy phát triển của mình. Bạn có thể sử dụng sqlite trong máy cục bộ và pg trong Heroku. Đây là những gì bạn nên có trong Gemfile của bạn

group :production do
  gem 'pg'
end

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

Và sử dụng lệnh này để cài đặt gói để bỏ qua đá quý sản xuất:

bundle install --without production

Xin lưu ý rằng không có cùng môi trường trong các máy sản xuất và phát triển không được khuyến khích.


Yup, đây là câu trả lời chính xác. +1, tôi làm điều này mọi lúc
JRG

@jrg bạn có gặp một số vấn đề khi làm điều này không? Tôi hỏi bởi vì heroku nói "không nên".
PatrixCR

Heroku không khuyến nghị điều đó bởi vì nhìn chung bạn muốn có env phát triển giống như máy chủ - tuy nhiên, miễn là bạn đang sử dụng ActiveRecord hoặc DataMapper và bạn không viết SQL thô, bạn sẽ ổn 99% thời gian. :)
JRG

1
@PatrixCR không, heroku sẽ làm điều đó cho bạn.
JRG

1
Sử dụng sqlite là cách giải quyết. Giải pháp sau đó là gì?
Amit Patel

32

Tôi có cùng một vấn đề ngày hôm nay. Tôi đã theo dõi tin nhắn Bạn cần cài đặt postgresql-server-dev-XY để xây dựng tiện ích mở rộng phía máy chủ hoặc libpq-dev để xây dựng ứng dụng phía máy khách. Vì vậy, cài đặt libpq-dev và gói ứng dụng rails một lần nữa và lỗi biến mất.

$ sudo apt-get install libpq-dev
$ bundle install

2
Đây là một giải pháp tốt hơn nếu bạn muốn phản chiếu postgres trên máy phát triển của bạn, làm việc cho tôi.
Collin White
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.