【问题标题】:Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension ubuntuGem::Installer::ExtensionBuildError: 错误: 无法构建 gem 原生扩展 ubuntu
【发布时间】:2013-08-06 11:47:51
【问题描述】:

在运行 bundle install 时,我在 'pg' gem 中收到以下错误,我将 gem 更改为 sqlite,然后也收到相同的错误。这是我的错误信息。

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb 
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from extconf.rb:2:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/pg-0.16.0 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/pg-0.16.0/ext/gem_make.out

An error occurred while installing pg (0.16.0), and Bundler cannot continue.
Make sure that `gem install pg -v '0.16.0'` succeeds before bundling.

我试过 apt-get install libpg-dev gem install pg -v '0.16.0' 没有任何帮助

【问题讨论】:

标签: ruby-on-rails gem


【解决方案1】:

您应该在安装 pg gem 之前安装 postgresql。

sudo add-apt-repository ppa:pitti/postgresql
sudo apt-get update
sudo apt-get install postgresql libpq-dev

如果您的 sqlite 无法正常工作,您可能错过了一些软件包。

sudo apt-get install libreadline-dev libssl-dev zlib1g-dev build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev

【讨论】:

  • 对于 sqlite,您是否安装了依赖项?我将使用依赖项更新答案
  • 我不确定 sqlite 依赖项,但对于 postgresql,我安装了所有内容并在命令行中工作。但我找不到宝石。
  • 我给出的依赖并不局限于sqlite。它还包括 sqlite 以外的软件包。尝试安装我提供的软件包,它应该可以工作。
  • 它抛出同样的错误。我尝试了大多数 Stackoverflow 答案。
  • 你试过这个sudo aptitude install ruby1.9.1-dev 然后重新安装gems?
【解决方案2】:

在 Ubuntu 14.04(以及可能所有其他基于 Debian 7 的发行版)上,此问题是由缺少 Ruby 开发包引起的。因此,修复只是简单地安装它:

sudo apt-get install ruby1.9.1-dev

【讨论】:

  • sudo yum install ruby-devel for CentOS(解决了我的问题)
【解决方案3】:

我有同样的问题,我通过将它安装在ubuntu 中作为普通用户而不是root user 来解决它。希望对您有所帮助。

【讨论】:

    【解决方案4】:

    我通过以下步骤解决了它

    1. 完全使用sudo apt-get purge ruby*卸载ruby
    2. 然后在删除 curl sudo apt-get purge curl

    然后我点击此链接安装 Ruby RVM 和 rails 4.0.0

    Install Rails 4.0.0

    【讨论】:

      【解决方案5】:

      安装

      http://postgresapp.com/
      

      然后

      PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
      

      然后

      bundle install
      

      【讨论】:

        【解决方案6】:

        有时您需要更新 Ruby 库,请运行以下代码:

        sudo gem update --system
        

        【讨论】:

          【解决方案7】:

          我遇到了与 Ruby 构建略有不同的问题。现有应用程序的Gemfile.lock 是使用ruby-1.9.3-p194 创建的,而我的本地红宝石是ruby-1.9.3-p484。切换到正确的 ruby​​ 可以成功捆绑。

          【讨论】:

            【解决方案8】:

            我在使用 CentOS 6.5 时遇到了同样的问题。

            1. 创建了一个新用户
            2. 将此用户添加到 sudoers 文件 /etc/sudoers
            3. 使用yum -y install ruby-devel 安装 ruby​​-devel

            【讨论】:

              【解决方案9】:

              在 Debian 上,pg 安装未能构建原生扩展,因为未安装 postgres。

              我安装了 postgres 依赖项:

              $ apt-get install postgresql postgresql-client libpq-dev
              

              然后pg gem 很好地构建了它的依赖项:

              $ gem install pg -v '0.18.3'
              Building native extensions.  This could take a while...
              Successfully installed pg-0.18.3
              1 gem installed
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-06-07
                • 1970-01-01
                • 2015-05-16
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-10-02
                • 2011-02-21
                相关资源
                最近更新 更多