2010-06-25 101 views
236

我想爲Ruby安裝PostgreSQL的pg gem。如何在Ubuntu上安裝PostgreSQL的pg gem?

我發出以下命令:

gem install pg 

我用RVM安裝了Ruby 1.9.2。

上述命令向我顯示以下錯誤。

的錯誤是:

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 

我不知道什麼是錯誤...

回答

569

您需要使用PostgreSQL的

sudo apt-get install libpq-dev 
+0

我沒有說,按照你的建議......在拿到follwoing 需要獲得0B檔案。開箱後5378kB將被釋放。 你想繼續嗎? [Y/n /?] Y 寫入擴展狀態信息...完成 (正在讀取數據庫... 166183當前安裝的文件和目錄) 正在刪除野牛... 正在刪除libnss3-dev ... 正在刪除libnspr4- dev ... 正在刪除libqt4-core ... 正在刪除libqt4-test ... 正在刪除libsqlite3-dev ... 正在處理man-db的觸發器.. – palani 2010-06-25 07:17:51

+4

看來它不能解決我的問題... 。我仍然堅持相同的 – palani 2010-06-25 07:20:04

+4

它爲我工作:D謝謝! – miguelSantirso 2012-02-29 15:54:21

35

的頭之後安裝PostgreSQL的開發包閱讀和顛簸2天,並嘗試其他筆記中發現的許多事情,下面的單行是Ubuntu Lucid 10.04與一些Maverick軟件包和RVM混合使用的治療方法(ruby 1.9.2-p290,rvm 1 .10.2 RubyGems的1.8.15,導軌3.0.1,Postgres的8.4.10):

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

結果:

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

{啊 - 終於成功} !! !請注意,運行pg_config的輸出在我的Ubuntu/Postresql安裝中缺少LIBS變量中的項-lpq!

以及爲什麼在某些地方從pq切換到pg - 混淆新手?

我還是不明白的事情是的雙套 - 和--with(選項 但我遠遠超出我的深度反正

+0

你救了我的命! – fenec 2012-03-09 05:37:38

+1

' - '通常用於將參數從第二個參數分離爲第一個命令,在這種情況下,extmod的配置腳本 – 2012-03-24 23:10:01

+1

謝謝。你的解決方案很完美。 – Sid 2012-05-28 11:41:32

9

對於.RVM用戶來說會更好:

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

它爲我工作(後我看到jdupont版)

18

安裝的libpq-dev的並沒有爲我工作。我還需要安裝建立必要的

sudo apt-get install libpq-dev build-essential 
+0

這適用於數字海洋上的Ubuntu 16.04.1 – Onyooo 2016-10-14 15:19:29

4

這解決了我在Ubuntu 12.04上遇到的每個建議都失敗後的問題。

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

我的解決方案几乎相同;我使用的是rbenv,對我來說有效的是:'gem install pg - --with-pg-lib =/usr/lib/postgresql/--with-pg-include =/usr/include/postgresql /';我不需要指定一個版本。 – 2015-05-07 18:46:22

28

我在Ubuntu 12.10和運行這個命令:

apt-get install libpq-dev 

幫我 - 以後跑了創業板安裝PG -v 「0.14.1」,現在都好

6

如果你安裝了libpq-dev並且仍然存在這個問題,可能是由於OpenSSL的libssl和朋友的版本衝突 -/usr/lib中的Ubuntu系統版本(libpq是針對此版本的)和第二個版本的RVM安裝在$ HOME/.rvm/usr/lib(或者如果是系統安裝,則爲/ usr/local/rvm/usr/lib)。您可以通過臨時重命名$ HOME/.rvm/usr/lib並查看「gem install pg」是否有效來驗證此情況。

爲了解決這一問題的RVM使用該系統OpenSSL庫重建(您可能需要手動刪除的libssl *和libcrypto *從RVM在/ usr/lib目錄。):

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

這終於解開了對於我在Ubunto 12.04上的問題。

+0

謝謝你的回答!越新的Ubuntu和越老的紅寶石建立越可能發生OpenSSL不匹配。 – mikeycgto 2016-02-08 15:48:35

+0

沒有別的工作,除了這個!非常感謝你@邁克 - 布萊克威爾。在你開始救援之前,我幾乎已經放棄了希望。 – varagrawal 2017-04-20 04:25:36

1

我有同樣的問題,並嘗試了很多不同的變種。經過一番嘗試,我變得能夠sudo gem install,但仍然有問題安裝它沒有sudo。
最後我發現一個決定 - 重新安裝rvm幫助了我。也許它可以節省別人的時間。

16

爲Ubuntu用戶簡單的解決方案...

首先卸載所有Postgres的包,然後運行這些commads ...

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 

然後運行 ​​'捆綁安裝'。一切都會好起來的。祝你有美好的一天!

+1

如果人們對如何刪除所有postgres軟件包感到好奇,可以使用sudo apt-get remove --purge postgresql postgresql-9.3(或任何版本的postgres)。 – Tommyixi 2015-07-21 22:36:05

0

這個問題的另一個解決方案是使用自制/ linuxbrew到安裝PostgreSQL:

brew install postgresql

由於習慣問題,我不喜歡使用sudo,除非我不得不這樣做。

+0

Homebrew僅適用於Mac。 – IIllIIll 2016-05-13 16:09:21

+2

有一個Linux分支。 – echristopherson 2017-02-09 20:31:26

23

需要添加包

sudo apt-get install libpq-dev 

安裝PG寶石回報率

3

我試圖建立在我剛安裝了Ubuntu 16.04 Rails項目。運行bundle時遇到同樣的問題。通過

sudo apt-get install libpq-dev 

運行

sudo apt-get install aptitude 

其次解決了這個問題對我來說。

1

對於那些試圖安裝Redmine的人,在嘗試上述所有內容後我錯過了sudo apt-get install ruby-all-dev

最初的錯誤是mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

0

對於嘗試此頁面上的所有問題的答案之後,誰仍然是有問題的人,下面的(最終)工作:

sudo apt-get install libgmp3-dev 
gem install pg 

這是所做的一切在這個別人提到頁。

postgresql 9.5。8
的Ubuntu 16.10

0

在Ubuntu中,這對我的作品,我希望幫助您:

sudo apt-get install libpq-dev 

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