2010-06-25 76 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