Làm cách nào để cài đặt pg gem của PostgreSQL trên Ubuntu?


292

Tôi đang cố gắng cài đặt pg gem của PostgreSQL cho Ruby.

Tôi đã ban hành lệnh sau:

gem install pg

Tôi đã cài đặt Ruby 1.9.2 bằng RVM.

Lệnh trên cho tôi thấy lỗi sau.

Lỗi là:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)

*** 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.

Provided configuration options:
 --with-opt-dir
 --without-opt-dir
 --with-opt-include
 --without-opt-include=${opt-dir}/include
 --with-opt-lib
 --without-opt-lib=${opt-dir}/lib
 --with-make-prog
 --without-make-prog
 --srcdir=.
 --curdir
 --ruby=/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

Tôi không biết lỗi là gì ...


1
apt install postgresql-server-dev-allcho Ubuntu 18.04.
Richard Peck

Câu trả lời:


678

Bạn cần cài đặt gói dev postgreSQL với tiêu đề của PostgreSQL

sudo apt-get install libpq-dev

Tôi đã làm điều đó theo đề nghị của bạn ... việc nhận được sự cần thiết để có được 0B tài liệu lưu trữ. Sau khi giải nén 5378kB sẽ được giải phóng. Bạn có muốn tiếp tục? [Y / n /?] Y Viết thông tin trạng thái mở rộng ... Xong (Đọc cơ sở dữ liệu ... 166183 tệp và thư mục hiện đang được cài đặt.) Xóa bison ... Xóa libnss3-dev ... Xóa libnspr4-dev ... Xóa libqt4-core ... Xóa libqt4-test ... Xóa libsqlite3-dev ... Xử lý các kích hoạt cho man-db ..
palani

3
Đối với những người thực sự mới sử dụng Ubuntu như tôi, nhưng thực sự mới sử dụng sudo apt-get install aptitudeđầu tiên :)
Haris Krajina

1
đã thử tất cả các loại kết hợp. ngay cả sau khi cài đặt lại postgres và libpq. không có may mắn .. vẫn là vấn đề tương tự
Krishnaprasad Varma

5
Đối với các bản phân phối có hương vị Cent / RedHat, gói bạn muốn làyum install postgresql-devel
Kyril

1
Tôi có cảm giác điều này có thể không hoạt động đối với một số người do các phiên bản Ubuntu của họ. Điều này thất bại với tôi vào ngày 13.04 với Postgres 9.1
Rebs

40

Sau khi đọc và đập khoảng 2 ngày và thử nhiều thứ được tìm thấy trong các ghi chú khác, dòng duy nhất sau đây là cách chữa trị cho tôi trên Ubuntu Lucid 10.04 trộn với một số gói Maverick và RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, đường ray 3.0.1, postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

kết quả:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{yea - cuối cùng thành công} !! ! lưu ý rằng đầu ra từ việc chạy pg_config thiếu mục -lpq trong biến LIBS trên bản cài đặt Ubuntu / Postresql của tôi !!

và tại sao việc chuyển đổi từ pq sang pg ở một số nơi nhất định - gây nhầm lẫn cho người mới ??

điều tôi vẫn chưa hiểu là bộ đôi - và - với (tùy chọn nhưng dù sao tôi cũng vượt quá chiều sâu của mình


2
'-' thường được sử dụng để phân tách các tham số cho lệnh đầu tiên từ lệnh thứ hai, trong trường hợp này, tập lệnh cấu hình của extmod
Timothy Meade

1
Cảm ơn bạn. Giải pháp của bạn là hoàn hảo.
Sid

cảm ơn rất nhiều vì đã chia sẻ giải pháp này đã bị mắc kẹt trên này trong một ngày. rất vui vì tôi đã gặp bài đăng này.
whizcreed

30

Tôi đang dùng Ubuntu 12.10 và đang chạy lệnh này:

apt-get install libpq-dev

đã giúp tôi - sau đó chạy gem cài đặt pg -v "0.14.1", và bây giờ tất cả đều tốt



25

Trong Ubuntu, nó hoạt động với tôi, tôi hy vọng giúp bạn:

sudo apt-get install libpq-dev

gem install pg  --   --with-pg-lib=/usr/lib 

24

Cài đặt libpq-dev không hoạt động với tôi. Tôi cũng cần cài đặt bản dựng

sudo apt-get install libpq-dev build-essential

16

Giải pháp đơn giản cho người dùng Ubuntu ...

Đầu tiên gỡ cài đặt tất cả các gói postgres, sau đó chạy các commads này ...

sudo apt-get install postgresql
sudo apt-get install postgresql-client libpq5 libpq-dev

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

Sau đó chạy 'cài đặt gói'. Mọi thứ sẽ ổn thôi. Chúc bạn ngày mới tốt lành!


1
Nếu mọi người tò mò về cách loại bỏ tất cả các gói postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (hoặc bất kỳ phiên bản nào của postgres bạn có).
Tommyixi 21/07/2015

9

Đối với người dùng .RVM, nó sẽ tốt hơn:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

nó làm việc cho tôi (sau khi tôi thấy phiên bản jdupont)


7

Nếu bạn đã cài đặt libpq-dev và vẫn gặp sự cố này thì có khả năng là do các phiên bản xung đột của libssl và bạn bè của OpenSSL - phiên bản hệ thống Ubuntu trong / usr / lib (mà libpq được xây dựng) và phiên bản thứ hai RVM được cài đặt trong $ HOME / .rvm / usr / lib (hoặc / usr / local / rvm / usr / lib nếu đó là cài đặt hệ thống). Bạn có thể xác minh điều này bằng cách tạm thời đổi tên $ HOME / .rvm / usr / lib và xem liệu "gem install pg" có hoạt động không.

Để giải quyết vấn đề, hãy xây dựng lại rvm bằng các thư viện OpenSSL của hệ thống (bạn có thể cần xóa thủ công libssl. * Và libcrypto. * Từ thư mục rvm / usr / lib):

rvm reinstall 1.9.3 --with-openssl-dir=/usr

Điều này cuối cùng đã giải quyết vấn đề cho tôi trên Ubunto 12.04.


Cảm ơn bạn cho câu trả lời này! Ubuntu càng mới và ruby ​​càng cũ thì khả năng xảy ra sự không khớp OpenSSL càng cao.
mikeycgto 8/2/2016

Không có gì khác làm việc ngoại trừ điều này! Cảm ơn bạn rất nhiều @ mike-blackwell. Tôi gần như đã từ bỏ hy vọng trước khi bạn đến giải cứu.
varagrawal


5

Điều này đã giải quyết vấn đề cho tôi trên Ubuntu 12.04 sau khi mọi đề xuất ở đây đều thất bại.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

Giải pháp của tôi gần như giống nhau; Tôi đang sử dụng rbenv và những gì hiệu quả với tôi là: Tôi không cần chỉ định một phiên bản.
Dan Tenenbaum

3

Tôi đã cố gắng thiết lập một dự án Rails trong Ubuntu 16.04 mới cài đặt của mình. Tôi gặp vấn đề tương tự trong khi chạy gói. Đang chạy

sudo apt-get install aptitude

theo dõi bởi

sudo apt-get install libpq-dev

Giải quyết nó cho tôi.


3

Đối với bất kỳ ai vẫn gặp sự cố sau khi thử tất cả các câu trả lời trên trang này, phần sau (cuối cùng) đã hoạt động:

sudo apt-get install libgmp3-dev
gem install pg

Điều này là sau khi làm mọi thứ khác được đề cập trên trang này.

postgresql 9.5.8
Ubuntu 16.10


Đây là những gì tôi cần trên Ubuntu 18.04
Weston Ganger

1

Tôi có cùng một vấn đề, và đã thử rất nhiều biến thể khác nhau. Sau một số lần thử, tôi đã có thể sudo gem install, nhưng vẫn gặp sự cố khi cài đặt nó mà không cần sudo.
Cuối cùng tôi đã tìm thấy một sự phân rã - cài đặt lại rvm đã giúp tôi. Có lẽ nó có thể tiết kiệm thời gian người khác.


1

Một giải pháp khác cho vấn đề này là cài đặt PostgreSQL bằng Homebrew / linuxbrew:

brew install postgresql

Như một thói quen, tôi không thích sử dụng sudo trừ khi tôi phải dùng.


Homebrew chỉ dành cho Mac.
IIllIIll

2
Có một ngã ba Linux.
echristopherson

Nếu bạn không muốn cài đặt PostgreSQL đầy đủ, cách sau đây có hiệu quả với tôi:brew install libpq && brew link libpq --force
Andrew

1

Đối với những người đang cố gắng cài đặt Redmine, tôi đã bỏ lỡ sudo apt-get install ruby-all-devsau khi thử tất cả các cách trên.

Lỗi ban đầu là mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Một tùy chọn khác là sử dụng Homebrew hoạt động trên Linux và macOS để chỉ cài đặt các thư viện hỗ trợ:

brew install libpq

sau đó

brew link libpq --force

( --forcetùy chọn là bắt buộc vì nó mâu thuẫn với công thức postgres.)

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.