【问题标题】:Error while installing Ruby on Rails安装 Ruby on Rails 时出错
【发布时间】:2013-11-06 14:38:12
【问题描述】:

我正试图在我的本地机器上安装 Ruby on Rails 以用于开发目的,但我遇到了一个错误。我不太清楚,但似乎它可能是一个宝石错误。不过,这是我第一次尝试同时使用 Ruby、Gem 和 Rails 这三种方法,所以我不确定。

运行命令“sudo gem install rails -V”这些是错误命中后打印的最后几行:

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:13:in `<main>'


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

安装的Ruby版本是:

ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]

gem的版本是:

1.8.23

【问题讨论】:

    标签: ruby-on-rails ruby gem


    【解决方案1】:

    【讨论】:

    • 安装 ruby​​ 开发包似乎已经解决了这个问题。谢谢!
    【解决方案2】:

    来自atomic gem README

    As of 1.1.0, JDK8 is required to build the atomic gem, since it attempts to use the new atomic

    请安装 Java,然后重新运行 gem 安装过程。

    【讨论】:

    • 谢谢,但是安装 JDK8 似乎并不能解决这个问题。
    【解决方案3】:

    你有什么 Linux?

    在 Mint 上,我做到了:

    sudo apt-get install git
    sudo apt-get install curl
    curl -L https://get.rvm.io | bash -s stable --ruby
    sudo apt-get install git-core
    source ~/.rvm/scripts/rvm
    bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
    rvm autolibs enable
    rvm reload
    rvm requirements
    sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion
    rvm install ruby-2.0
    curl -L https://get.rvm.io | bash -s stable --rails
    

    而且效果很好。但是,这将(当前)安装 Ruby 2.0 和 rails 4.0。

    【讨论】:

    • 谢谢,我在 Xubuntu 上,但似乎我只是错过了 ruby​​ 开发包。安装似乎已经解决了问题。