2013-03-08 21 views
7

Tôi đang cố gắng cài đặt đá quý pg (PostreSQL) cho Ruby. Tôi nhận được lỗi này:pg gem install failed phiên bản cũ quá?

postgres/9.2-pgdg/bin/64/pg_config 
Using config values from /location/to/install/postgres/9.2-pgdg/bin/64/pg_config 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for pg_config_manual.h... yes 
checking for PQconnectdb() in -lpq... yes 
checking for PQconnectionUsedPassword()... no 
Your PostgreSQL is too old. Either install an older version of this gem or upgrade your  database. 
*** extconf.rb failed *** 
Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

PostgreSQL phiên bản: postgres (PostgreSQL) 9.2.3

OS: solaris 10

Tôi cũng đã cố gắng:

gem install pg -- --with-pgsql-lib=/location/of/install/postgres/9.2-pgdg/lib/64/ --with-pg-config=/location/of/install/postgres/9.2-pgdg/bin/64/pg_config 

tôi không có ý tưởng tại sao lỗi này xảy ra và tôi không thể tìm thấy bất kỳ thông tin hữu ích nào trên Google.

Bất kỳ trợ giúp nào được đánh giá cao.

+0

tôi có nhiều phiên bản nhưng tôi đang trỏ đến đúng phiên bản còn ở mkmf.log tôi thấy các lỗi tương tự tham khảo pQconnectionUsedPassword (). – arrowill12

+2

Bạn có thể cần đặt 'PATH' để đảm bảo rằng tệp thực thi' pg_config' đúng là đầu tiên trong 'PATH' và đặt bất kỳ' LD_LIBRARY_PATH' hoặc các môi trường tương đương với Solaris để đảm bảo tìm đúng 'libpq'. –

+0

'mkmf.log' nói gì trong phần mà nó kiểm tra sự hiện diện của' PQconnectionUsedPassword'? –

Trả lời

2

Rất nhiều thứ có thể sai khi cài đặt ứng dụng khách cơ sở dữ liệu, đá quý và sử dụng nó.

Tôi thường cài đặt PostgreSQL từ nguồn chứ không phải từ bản phân phối. Tại thời điểm đó tôi biết tôi có tất cả các nguồn và biết chính xác nơi mà mọi thứ đã được cài đặt. Đó là điều quan trọng khi cài đặt đá quý mà nói chuyện với các trình điều khiển khách hàng.

Tôi cũng dựa vào cài đặt Ruby từ nguồn, hoặc bằng cách tự cài đặt trực tiếp, hoặc bằng cách sử dụng rbenv hoặc RVM nếu nó nằm trên một trong các hộp phát triển của tôi. Sau đó, tôi cũng cài đặt các đá quý pg trực tiếp, sử dụng gem install pg; Tôi đã có quá nhiều kinh nghiệm xấu bằng cách sử dụng distro khi cài đặt ngôn ngữ để tôi đi học cũ trên đó.

Tôi đã viết một kịch bản ít tôi sử dụng trên các hệ thống Mac OS của tôi, mà tôi đã tìm thấy hữu ích cho các hộp CentOS Linux của tôi:

 
#!/bin/sh -x 

PATH=/Library/PostgreSQL/9.2/bin:$PATH 
gem install pg 

tôi điều chỉnh việc bổ sung PATH tùy thuộc vào nơi PostgreSQL đã được cài đặt, và nó dường như làm điều này. Tôi đã sử dụng các tùy chọn dài hơn, "toàn diện" hơn, nhưng điều này dường như cũng hoạt động.

Vấn đề là trình cài đặt cần đào thông tin cài đặt từ tệp thực thi pg_config và có thể tìm thấy pg_config thực hiện thủ thuật.

+0

Hoạt động mọi lúc. – pzin

0

Tôi đã sử dụng hạt này cho đến khi tôi nhận ra rằng postgresql-develpostgresql-libs là từ 8.1.23 !!!

$ yum list installed postgres* 
Loaded plugins: fastestmirror, security 
Installed Packages 
postgresql-devel.i386       8.1.23-10.el5_10      installed 
postgresql-devel.x86_64       8.1.23-10.el5_10      installed 
postgresql-libs.i386       8.1.23-10.el5_10      installed 
postgresql-libs.x86_64       8.1.23-10.el5_10      installed 

--------------- 

$ sudo yum install postgresql94-libs 
$ sudo yum install postgresql94-devel 

$ gem install pg 
Successfully installed pg-0.18.1 
0

Cài đặt và liên kết postgresql từ homebrew cố định nó cho tôi:

brew install postgresql 
brew unlink postgresql91 
brew link --overwrite postgresql 
Các vấn đề liên quan