在 CentOS 6 上安装 pg gem

Posted

技术标签:

【中文标题】在 CentOS 6 上安装 pg gem【英文标题】:Install pg gem on CentOS 6 【发布时间】:2014-06-11 16:37:18 【问题描述】:

我正在尝试使用 ruby​​ on rails 和 postgres 设置我的 VPS (CentOS 6.4)。

我安装了 ruby​​ (2.1.0p0)、rails (4.1.0) 和 postgresql (9.3.4) 没有问题。

当我尝试创建新的 rails 应用程序 (rails new new_app -d postgresql) 时,它会在安装 pg gem 时停止。我查看了有关此错误的所有 SO 帖子,并尝试了几乎所有我能找到的东西。最建议的是运行“yum install postgresql-devel”,但仍然没有工作。

您可以在下面找到 ssh 输出和 mkmf.log。如果需要更多信息,请告诉我...


输出

构建原生扩展。这可能需要一段时间... 错误:安装 pg 时出错: 错误:无法构建 gem 原生扩展。 /home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb 检查 pg_config... 是的 使用 /usr/bin/pg_config 中的配置值 检查 libpq-fe.h... *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能缺乏必要 库和/或标题。检查 mkmf.log 文件以获取更多详细信息。你可以 需要配置选项。 提供的配置选项: --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 --没有-make-prog --srcdir=。 --curdir --ruby=/home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby --with-pg --没有-pg --with-pg-config --without-pg-config --with-pg_config --without-pg_config --with-pg-dir --没有-pg-dir --with-pg-include --without-pg-include=$pg-dir/include --with-pg-lib --without-pg-lib=$pg-dir/lib /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:456:in `try_do':编译器无法生成可执行文件。 (运行时错误) 您必须先安装开发工具。 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:587:in `try_cpp' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1120:in `block in find_header' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:918:in `block in checks_for' 来自/home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in推迟' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block in delay' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:347:in `推迟' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for' 来自 /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1119:in `find_header' 来自 extconf.rb:48:in `' extconf 失败,退出代码 1

mkmf.log

“gcc -o conftest -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/x86_64-linux -I/home/deploy/.rvm/rubies/ruby-2.1。 0/include/ruby-2.1.0/ruby/backward -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0 -I. -I/usr/include -O3 - fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-括号 -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-语句后 -Wimplicit-function-declaration -fPIC conftest.c -L. -L/home/deploy/.rvm/rubies/ruby-2.1.0/lib -Wl,-R/home/deploy/.rvm/rubies /ruby-2.1.0/lib -L/usr/lib64 -Wl,-R/usr/lib64 -L.-fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-rpath,'/../ lib' -Wl,-R -Wl,'/../lib' -L'/../lib' -lruby -lpthread -lrt -ldl -lcrypt -lm -lc" gcc:尝试执行“as”时出错:execvp:权限被拒绝 检查的程序是: /* 开始 */ 1:#include“ruby.h” 2: 3: int main(int argc, char **argv) 4: 5:返回0; 6: /* 结尾 */

【问题讨论】:

【参考方案1】:

之前:

对于 Centos 6:使用 guide 正确安装 Postgres 9.*。

之后:

yum install postgresql-libs postgresql-devel

有用的指导:

How to setup RoR with Postgres

【讨论】:

【参考方案2】:

由于您没有使用 CentOS 6 (PostgreSQL 8.4) 附带的过时 PostgreSQL 版本,您需要安装与您的版本 (PostgreSQL 9.X) 匹配的 -devel 软件包。

最简单的方法是使用official PostgreSQL yum repository。

由于最新版本是 9.5,并且它与所有 9.X 版本兼容,因此我将为该版本编写说明。以后可以参考official instructions获取更新的命令。

yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm
yum install postgresql95-devel

然后使用-with-pg-config 选项安装gem:

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

【讨论】:

【参考方案3】:

这对我来说更容易:

ln -s /usr/pgsql-9.5/bin/pg_config /usr/local/bin/

【讨论】:

这比在每个包中指定要容易得多。但是,您必须记住在主要的 postgresql 版本更改 (9.*.*) 时更新它 这不适用于 PostgreSQL 9.X,因为 CentOS 6 带有 PostgreSQL 8.4【参考方案4】:

试试这样的;

before "bundle:install" do
  run "ls -l #fetch(:latest_release)/Gemfile"
  #run "bundle config  --local --gemfile=#fetch(:latest_release)/Gemfile build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config"
  run "cd #fetch(:latest_release) && bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config"
end

【讨论】:

你应该在哪里尝试?【参考方案5】:

您可以尝试使用 postres pg_config 文件路径选项安装 pg gem:

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

请根据您的系统更新路径

问候

【讨论】:

【参考方案6】:

我在我的 Mac 上遇到了这个问题,这是一个 bash / RVM 问题。我不得不将它添加到我的 bash 中: [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 。鉴于它正在寻找配置文件,我会调查一下。

【讨论】:

以上是关于在 CentOS 6 上安装 pg gem的主要内容,如果未能解决你的问题,请参考以下文章

Rails:在 OS X 上安装 PG gem - 无法构建本机扩展

如何在 Ubuntu 上安装 PostgreSQL 的 pg gem?

rails 4.2.0:无法在 ubuntu 14.04 上安装 pg gem

无法使用 Mavericks 在我的 Mac 上安装 PG gem

如何在 Debian 上安装 pg gem 以在 AWS beanstalk 应用程序上使用?

ARM64架构(M1芯片):无法安装pg gem(使用PostgresApp)