【问题标题】:Install pg gem on CentOS 6在 CentOS 6 上安装 pg gem
【发布时间】: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:} /* 结尾 */

【问题讨论】:

    标签: ruby-on-rails postgresql gem centos centos6


    【解决方案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" 。鉴于它正在寻找配置文件,我会调查一下。

          【讨论】:

            猜你喜欢
            • 2020-11-04
            • 1970-01-01
            • 1970-01-01
            • 2016-03-27
            • 2020-02-28
            • 2019-09-21
            • 2018-12-10
            • 2013-12-06
            • 2013-06-21
            相关资源
            最近更新 更多