PG Gem安装失败,找不到libpq-fe.h头文件。

10
每当我在我的VPS(CentOS Linux release 7.0.1406 (Core))上运行时,安装pg gem时会出现错误。请注意保留HTML标签。
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.

我可以使用以下命令安装独立的pg:gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config,这样问题就解决了。
因此,我添加了一个capistrano任务,在部署时创建./bundle/config文件,并将build.pg键设置为我的VPS上pg_config的路径。在Capistrano的config/deploy.rb中,这是在bundler:install之前调用的。
desc "Create bundle config"
task :prepare_bundle_config do
  on roles(:app) do
    within release_path do
      execute :bundle, 'config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config --local'
    end
  end
end

我已经安装了必要的软件包:

postgresql94-server.x86_64
postgresql94-devel.x86_64
postgresql94-libs.x86_64
libpqxx.x86_64
libpqxx-devel.x86_64

这是我安装的capistrano*宝石

bundle list | grep capistrano
* capistrano (3.3.5)
* capistrano-bundler (1.1.4)
* capistrano-rails (1.1.2)
* capistrano-rbenv (2.0.3)
* capistrano-stats (1.1.1)

在使用bundler安装pg时,我错过了什么?如果您需要任何其他信息,请在下面留下评论,我会更新此帖子。
4个回答

20

PostgreSQL二进制文件不在路径中。将它们作为符号链接到您的路径中的一个目录中,然后您就应该没问题了:ln -s /usr/pgsql-9.4/bin/p* /usr/local/bin

你是构建 PostgreSQL 还是通过 yum 安装的?


你的自定义任务能够成功并独立地通过Capistrano运行吗?你从Capistrano得到了什么输出? - fearmint
感谢您的回复:这里是带有 Capistrano 输出(带调试)的 Gist https://gist.github.com/whargrove/03ff94d1b6e7648030ed - Wes
prepare_bundle_config 无法独立运行,因为它使用 release_path,所以仅在部署任务期间可用。 - Wes
顺便提一下,将PostgreSQL的二进制文件符号链接到远程用户的路径似乎已解决了这个问题。谢谢!一旦SO允许,我会尽快奖励悬赏。 - Wes
也适用于我,我在CentOS 7上运行PostgreSQL 9.3,非常感谢。 - Onur Kucukkece
@JoePasq,您只用了一行代码就让我从为期两天的抓狂中恢复过来。向您致敬。 - PSCampbell

1

另外,如果您使用的是Mac

brew link postgresql

或者在我的情况下

brew link postgresql@12

1

这里只是针对 PostgreSQL 11 的解决方案,如果有人来到这里。

sudo yum install epel-release

sudo yum install postgresql11-llvmjit

sudo yum install postgresql11-devel postgresql11-libs

然后运行。
gem install pg -v '1.2.3' -- --with-pg-config=/usr/pgsql-11/bin/pg_config 

就是这样


0
我发现如果我使用源代码编译pgsql,并且PATH ENV没有配置pgsql/bin,就会出现这种情况。你可以试试看。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接