在ubuntu上安装rails - 错误:无法构建gem原生扩展

时间:2016-02-10 13:44:08

标签: ruby-on-rails ruby installation ubuntu-14.04

我想开始学习ror,但是我在安装它时遇到了问题。这就是我输入" sudo gem install rails"英寸

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
        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:1:in `<main>'


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

这解决了问题:

sudo apt-get install ruby-dev

2 个答案:

答案 0 :(得分:2)

参考文献:http://railsapps.github.io/installrubyonrails-ubuntu.html

准备系统

在安装Ruby on Rails之前,您需要使用所需的系统软件准备计算机。

您需要超级用户(root)访问权限才能更新系统软件。

首先更新您的包管理器:

$ sudo apt-get update

必须完成且没有错误,否则后续步骤将失败。

安装卷曲:

$ sudo apt-get install curl

您将使用Curl安装RVM。 使用RVM安装Ruby

使用Ruby Version Manager RVM安装Ruby并管理Rails版本。

如果您的计算机上安装了旧版本的Ruby,则无需将其删除。 RVM将保持您的“系统Ruby”不受影响,并使用您的shell拦截对Ruby的任何调用。任何较旧的Ruby版本都将保留在您的系统上,RVM版本将优先。

当写这篇文章时,Ruby 2.3.0是最新的。您可以检查当前推荐的Ruby版本。 RVM将安装最新的稳定Ruby版本。

RVM网站介绍了如何安装RVM。这是最简单的方法:

$ \curl -L https://get.rvm.io | bash -s stable --ruby

注意“curl”之前的反斜杠(这可以避免潜在的版本冲突)。

“-ruby”标志将安装最新版本的Ruby。

RVM包含一个“autolibs”选项,用于识别和安装操作系统所需的系统软件。有关更多信息,请参阅文章RVM Autolibs:自动依赖性处理和Ruby 2.0。 如果您已经安装了RVM

如果您已经安装了RVM,请将其更新到最新版本并安装Ruby:

$ rvm get stable --autolibs=enable
$ rvm install ruby
$ rvm --default use ruby-2.3.0

安装故障排除和建议 RVM故障排除

如果您在使用RVM安装Ruby时遇到问题,可以使用irc.freenode.net上的IRC(Internet Relay Chat)频道#rvm直接从RVM团队获取帮助:

http://webchat.freenode.net/?channels=rvm

如果您从未使用过IRC,那么了解如何使用IRC是值得的,因为RVM团队非常友好。 freenode上的IRC需要注册(请参阅如何注册)。

答案 1 :(得分:0)

如果您使用的是最新版本的Rails,则需要更新版本的Ruby。

  

Ruby on Rails 4.0发行说明

     

Rails 4.0中的亮点:

Ruby 2.0 preferred; 1.9.3+ required

我们在您的错误消息中看到:

/usr/bin/ruby1.9.1 . . .

而且,将来您应始终在问题中包含与您的问题相关的所有软件组件的版本号。对于希望帮助您的人来说,它更关注真正的问题。