ruby-on-rails-3 - 在尝试安装pg的gem时找不到'libpqfe.h'头文件

  显示原文与译文双语对照的内容

我正在使用 Rails 3.1预版本。 我喜欢使用 PostgreSQL,但问题是安装 pg gem 。 它给了我以下错误:


demonchand@system-001:~/exercise/personal/pro$ gem install pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
 ERROR: Failed to build gem native extension.

/home/demonchand/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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/demonchand/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
 --with-pg
 --without-pg
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib
 --with-pg-config
 --without-pg-config
 --with-pg_config
 --without-pg_config


Gem files will remain installed in/home/demonchand/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to/home/demonchand/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

谁能告诉我如何解决这个问题?

时间:

看起来这个标题是 libpq-dev 软件包的一部分( 至少在下面的Ubuntu版本中: Natty,Lucid,Oneiric,精确的穿山甲和 Trusty Tahr:


...
/usr/include/postgresql/libpq-fe.h
...

所以尝试安装 libpq-dev:

  • 对于Ubuntu系统: sudo apt-get install libpq-dev
  • 在RHEL系统上:yum install postgresql-devel
  • 用于苹果机:brew install postgresql

我还尝试了 gem install libpq-dev,但收到了这个错误:


Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

但是我发现使用 sudo apt-get ( 我试图避免使用 RoR ) 安装工作,i.e.


sudo apt-get install libpq-dev

然后我就可以


gem install pg 

没有问题。

在 Mac OS X 上,使用 Homebrew 来安装正确的头:


brew install postgresql

然后运行

 
gem install pg

 

应该工作。

我可以用另一种方法解决这个问题。 在系统中找不到库。 因此我使用PostreSQL主网站上的和应用安装了它。 在我的案例中,( OSX ) 在安装结束之后发现了/Library/PostgreSQL/9. 1/include/。 如果已经安装了 PG,你还可以将文件放在其他位置,具体取决于你的系统。

多亏了上的这个链接,如何为gem安装添加额外的路径,我可以使用这个命令将gem指向 lib:


export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

之后它就能工作,因为它现在知道在哪里可以找到丢失的库。 只需将路径替换为 libpq-fe.h的正确位置即可

如果有帮助的话,就像click或者"这很有用"点击 is 。

对于任何Debian-based分发( 包括 Ubuntu ),更一般的答案如下。 首先,安装作为根运行的apt-file 软件包:


apt-get install apt-file

这允许你搜索包含文件的软件包。 然后,使用

 
apt-file update

 

( 可以作为普通用户运行) 。 然后,使用以下方法查找丢失的标头:


apt-file search libpq-fe.h

在我的机器上,这给出了:


libpq-dev:/usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev:/usr/include/postgres-xc/server/gtm/libpq-fe.h

到了 !

我最近升级到了 Yosemite,在构建 pg gem时遇到困难。

报告的错误典型:


Using config values from/usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

我的解决方案是 gem uninstall pg,然后 bundle update pg 以最新的方式替换 gem 。 我确实运行了 brew update; brew upgrade 在 Yosemite install安装之后,获取我先前安装的软件包的最新版本。

在CentOS上,我使用以下命令安装了 libpq-dev package


yum install postgresql-devel

执行 gem install pg 返回的错误与" No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""。

将gem安装如下解决了我的问题


gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config

...