尝试安装pg gem时找不到'libpq-fe.h头文件

我正在使用Ruby on 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 

我如何解决这个问题?

它看起来像在Ubuntu中,头是libpq-dev软件包的一部分 (至less在以下Ubuntu版本中是: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (精确的穿山甲)和14.04 Trusty Tahr)):

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

因此,请尝试安装libpq-dev或其相当于您的操作系统:

  • 对于Ubuntu系统: sudo apt-get install libpq-dev
  • 在Red Hat Linux (RHEL)系统上: yum install postgresql-devel
  • 对于Mac Homebrew : brew install postgresql
  • 对于Mac MacPorts PostgreSQL: gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • 对于OpenSuse : zypper in postgresql-devel

在Mac OS X上,使用Homebrew安装正确的标题:

 brew install postgresql 

然后运行

 gem install pg 

应该工作。

我也试过做gem install libpq-dev ,但是我收到这个错误:

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

然而,我发现使用sudo apt-get (我试图避免使用Ruby on Rails)安装工作,即

 sudo apt-get install libpq-dev # or apt-get install postgres-server-dev-{pg.version} # for postgresql 9.4 on Ubuntu 14.04 

那么我就能做到

 gem install pg 

没有问题。

我可以用另一种方式解决这个问题。 我没有find我的系统上的图书馆。 因此,我使用PostgreSQL主站的一个应用程序来安装它。 在我的情况下(OS X),一旦安装结束,我在/Library/PostgreSQL/9.1/include/find了该文件。 如果您已经安装了PostgreSQL,您也可以将文件放在其他地方,具体取决于您的系统。

感谢这个关于如何为gem安装添加额外path的链接,我可以使用以下命令将gem指向lib:

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

之后,它的工作,因为它现在知道在哪里可以find缺less的库。 只需replace为libpq-fe.h的正确位置的path

找不到libpq-fe.h标头

我在运行以下命令的CentOS 7.0.1406上成功了:

 ~ % psql --version # => psql (PostgreSQL) 9.4.1 yum install libpqxx-devel gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config 

或者 ,您可以将bundlerconfiguration为始终使用这些选项安装pg (有助于在部署环境中运行bundler),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config

对于CentOS 6.4,

 yum install postgresql-devel gem install pg 

运作良好!

在我的情况下,它是封装postgresql-server-dev-8.4 (我在Ubuntu 11.04 (Natty Narwhal),64位)。

在Mac OS X上运行如下:

 gem install pg -- --with-pg-config=***/path/to/pg_config*** 

***/path/to/pg_config***是pg_config的path

只是为了logging:

使用PostgresApp的OS X中的Ruby on Rails 4应用程序(在这种情况下,需要0.17.1版本 – 这是一个旧项目):

 gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 

使用Postgres.app的Mac用户的正确答案是针对该包提供的libpq进行构build。 例如,在9.4版本(截至撰写本文时),所有你需要的是:

 export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include" gem install pg 

这将保持你的pg gem与你安装的PostgreSQL的版本完全同步。 在这种情况下,从Homebrew安装一些东西是很浪费的。

我在Amazon Linux上遇到了同样的问题。 我可以find头文件libpq-fe.h ,但不知何故,它不工作。

它来自通过机器上的不同用户安装的不同版本的软件包。 PostgreSQL 9.2和PostgreSQL 9.3被安装。 因此,在包含这些库之前,请确保您的PostgreSQL版本。

对我来说,魔术指挥线是:

 sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel 

资料来源: 一个几乎白痴的指南安装PostgreSQL 9.3,PostGIS 2.1和pumRouting与百胜

对于任何基于Debian的发行版(其中包括Ubuntu),更一般的答案如下。 首先,安装以root身份运行的apt-file包:

 apt-get install apt-file 

这使您可以search包含文件的包。 然后,使用更新其数据库

 apt-file update 

(这可以像普通用户一样运行)。 然后,使用以下命令查找缺less的标题:

 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 

你走了!

我最近升级到Mac OS X v10.10 (优胜美地),并有困难的build设pggem。

报告的错误是典型的:

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

我的解决scheme是gem uninstall pg ,然后bundle update pg来取代最新的gem。 我没有运行brew update; brew upgrade 在Yosemite安装后进行brew update; brew upgrade ,以获得我以前安装的最新版本的软件包。

在Mac上,我使用下面的代码解决了这个问题:

 gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config 

在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-xx/bin/pg_config 

我在Mac上运行Postgres.app,我不得不这样做

 export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin 

第一。 然后

 bundle install 

为我工作。

我在Mac OS上遇到了同样的问题,但是我通过在terminal中使用以下内容轻松安装了PostgreSQL gem:

 ARCHFLAGS="-arch x86_64" gem install pg 

(我先用brew install postgresql安装PostgreSQL。)

我find了这个答案,这是唯一一个为我工作的人(Mac OS) – 研究了大约两天之后:

 $ sudo su $ env ARCHFLAGS="-arch x86_64" gem install pg Building native extensions. This could take a while... Successfully installed pg-0.11.0 1 gem installed Installing ri documentation for pg-0.11.0... Installing RDoc documentation for pg-0.11.0... 

请参阅堆栈溢出问题找不到PostgreSQL客户端库(libpq)

在FreeBSD(9.1)上,必要的软件包是/ usr / ports / database / postgresql-server *,安装时还会安装所需的头文件,使得“pg”的gem安装失败。 这个答案在这里帮助我find解决scheme,但包名称的差异需要一点search。

希望这可以帮助别人在FreeBSD系统上search“-dev”包时避免一些头疼的事情!

在Debian 7.0,64位(Wheezy)上,运行:

 sudo apt-get install libpq-dev 

成功安装libpq-dev后,运行:

 bundle install 

在CentOS 6.5(Squeeze)下我创build了一个文件:

 $ sudo touch /etc/profile.d/psql.sh 

内容:

 pathmunge /usr/pgsql-9.3/bin 

注意在这里,你应该用pg_config文件设置你的PostgreSQLpath。 你可以用命令find它:

 $ sudo find / -iname pg_config 

保存文件:

 $ sudo chmod +x /etc/profile.d/ruby.sh 

并尝试再次执行您的命令。

注意:任何时候你改变Bashconfiguration – 改变profile.dconfiguration – 你应该重新加载Bash。

libpq-fe.h的位置取决于PostgreSQL的安装位置(这取决于你安装的方式)。 使用locatehttp://en.wikipedia.org/wiki/Locate_%28Unix%29 )在你的机器上findlibpq-fe.h文件。 如果存在,它将位于PostgreSQL安装的include目录中。

 $ locate libpq-fe.h /Library/PostgreSQL/9.1/include/libpq-fe.h 

包含pg_configbin目录与include目录位于同一目录中。 如错误所示,使用–with-pg-config选项安装gem:

 $ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config" 

请注意,如果您从未使用过locate或者在安装PostgreSQL后未更新,则可能需要运行updatedb

我刚刚在OSX上运行brew和postgres@9.4

我的修复是这样的:

 CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install 

对于AltLinux ,必须安装postgresql9.5-devel包(在我的例子中是postgresql9.5-devel ):

 apt-get install postgresql9.5-devel 

我解决了这个安装'postgresql-common'包。 这个软件包提供了pg_config二进制文件,这很可能是你丢失的东西。

我有一个类似的问题,这对我来说是固定的:

 gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server 

资源:

https://gist.github.com/oisin/6562181

在OS X 10.9 (Mavericks)上,我brew-installed postgresql ,然后我必须rvm reinstall我的Ruby。 我现在快乐:)

我终于解决了这个问题,但没有使用前面描述的方法。

使用brew install postgresql ,我发现它已经安装,但没有链接。

  1. 找出PostgreSQL的安装位置,并删除它,

  2. 然后再重新brew install postgresql

  3. brew link postgresql

  4. gem install pg

只有卸载(sudo apt-get清除)libpq-dev并重新安装它为我工作。

在OS X和MacPorts上 ,不再需要PostgreSQL的-devel软件包。 安装pg gem的工作原理如下:

 ~ > sudo port install postgresql-devel ... Error: postgresql-devel has been replaced by postgresql91; please install that port instead ~ > gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql95/bin/pg_config 

另见这个post 。