307

我正在尝试为 Ruby 安装 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

我不知道是什么错误...

4

19 回答 19

718

您需要安装带有 PostgreSQL 标头的 postgreSQL 开发包

sudo apt-get install libpq-dev
于 2010-06-25T06:56:35.143 回答
41

在阅读和折腾 2 天后,并尝试了在其他笔记中发现的许多东西后,以下单行是我在 Ubuntu Lucid 10.04 上与一些 Maverick 软件包和 RVM(ruby 1.9.2-p290,rvm 1.10.2 ruby​​gems 1.8.15,rails 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(option 但我已经超出了我的深度

于 2012-02-17T22:53:13.993 回答
33

在 Ubuntu 中,这对我有用,希望对您有所帮助:

sudo apt-get install libpq-dev

gem install pg  --   --with-pg-lib=/usr/lib 
于 2018-03-06T15:49:31.557 回答
30

我在 Ubuntu 12.10 上运行这个命令:

apt-get install libpq-dev

帮助了我 - 之后运行 gem install pg -v "0.14.1",现在一切都好

于 2013-01-15T15:03:05.473 回答
27

需要添加包

sudo apt-get install libpq-dev

在 RoR 中安装 pg gem

于 2016-01-08T08:51:39.130 回答
26

安装 libpq-dev 对我不起作用。我还需要安装 build-essential

sudo apt-get install libpq-dev build-essential
于 2012-09-04T18:40:37.470 回答
16

ubuntu 用户的简单解决方案...

首先卸载所有 postgres 包,然后运行这些命令...

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

然后运行“捆绑安装”。一切都会好起来的。祝你有美好的一天!

于 2014-05-23T19:19:21.477 回答
11

sudo apt-get install postgresql-client libpq5 libpq-dev然后做gem install pg

于 2020-08-18T11:33:59.663 回答
9

对于 .RVM 用户来说会更好:

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

它对我有用(在我看到 jdupont 版本之后)

于 2012-03-15T17:37:38.057 回答
7

If you have libpq-dev installed and are still having this problem it is likely due to conflicting versions of OpenSSL's libssl and friends - the Ubuntu system version in /usr/lib (which libpq is built against) and a second version RVM installed in $HOME/.rvm/usr/lib (or /usr/local/rvm/usr/lib if it's a system install). You can verify this by temporarily renaming $HOME/.rvm/usr/lib and seeing if "gem install pg" works.

To solve the problem have rvm rebuild using the system OpenSSL libraries (you may need to manually remove libssl.* and libcrypto.* from the rvm/usr/lib dir):

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

This finally solved the problem for me on Ubunto 12.04.

于 2013-03-26T21:22:46.387 回答
6

尝试这个

sudo apt-get install postgresql postgresql-contrib libpq-dev

您应该首先安装 PG 数据库服务器以安装客户端。之后,您安装客户端。

请参阅此博客文章,了解如何为 Ruby on Rails 开发首次设置 PostGresSQL。

于 2017-07-03T03:47:25.597 回答
5

在此处的每个建议都失败后,这解决了我在 Ubuntu 12.04 上的问题。

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql
于 2012-11-07T21:55:34.673 回答
3

我试图在我新安装的 Ubuntu 16.04 中设置一个 Rails 项目。我在运行 bundle 时遇到了同样的问题。跑步

sudo apt-get install aptitude

其次是

sudo apt-get install libpq-dev

为我解决了。

于 2016-09-01T03:59:25.283 回答
3

对于尝试此页面上的所有答案后仍有问题的任何人,以下(最终)有效:

sudo apt-get install libgmp3-dev
gem install pg

这是完成此页面上提到的所有其他内容之后。

PostgreSQL 9.5.8
Ubuntu 16.10

于 2017-08-29T23:13:11.420 回答
2

这个问题的另一个解决方案是使用 Homebrew/linuxbrew 安装 PostgreSQL:

brew install postgresql

作为一个习惯问题,我不喜欢使用 sudo ,除非我必须这样做。

于 2015-07-18T03:12:02.793 回答
2

对于那些试图安装Redmine的人,我sudo apt-get install ruby-all-dev在尝试了以上所有之后错过了。

初始错误为mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.

于 2016-10-25T10:34:10.273 回答
1

我遇到了同样的问题,并尝试了很多不同的变体。经过一些尝试,我变得能够sudo gem install,但在没有 sudo 的情况下安装它仍然有问题。
最后我找到了一个决定 - 重新安装 rvm 帮助了我。可能它可以节省其他人的时间。

于 2013-03-29T12:17:29.000 回答
1

apt-get install ruby-dev为我工作。

于 2018-10-18T02:57:41.047 回答
0

另一种选择是使用适用于 Linux 和 macOS 的Homebrew来安装支持库:

brew install libpq

然后

brew link libpq --force

(该--force选项是必需的,因为它与 postgres 公式冲突。)

于 2020-03-13T07:42:59.940 回答