Gem :: Installer :: ExtensionBuildError:错误:无法构建gem原生扩展ubuntu

时间:2013-08-05 17:10:07

标签: ruby-on-rails gem

在运行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'没有任何帮助我

9 个答案:

答案 0 :(得分:13)

在安装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

答案 1 :(得分:9)

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

sudo apt-get install ruby1.9.1-dev

答案 2 :(得分:4)

我遇到了同样的问题,我将其作为普通用户ubuntu安装在root user而不是{{1}}。我希望这对你有帮助。

答案 3 :(得分:2)

我通过以下步骤解决了这个问题

  1. 使用sudo apt-get purge ruby*
  2. 完全卸载ruby
  3. 然后删除curl sudo apt-get purge curl
  4. 然后我按照此链接安装Ruby RVM和rails 4.0.0

    Install Rails 4.0.0

答案 4 :(得分:1)

安装

http://postgresapp.com/

然后

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

然后

bundle install

答案 5 :(得分:1)

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

sudo gem update --system

答案 6 :(得分:1)

我遇到了一个与Ruby版本略有不同的问题。现有应用程序的Gemfile.lock是使用ruby-1.9.3-p194创建的,我的本地ruby是ruby-1.9.3-p484。切换到正确的ruby允许成功捆绑。

答案 7 :(得分:0)

我在CentOS 6.5上遇到了同样的问题。

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

答案 8 :(得分:0)

在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