Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed to build gem native extension — Rails install

I have been installing Ruby on Rails based on the instruction from edX online class.

Here is a list of terminal commands, and, where relevant, corresponding output:

$ sudo apt-get install ruby1.9.1 

installation successful

$ wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz $ tar zxvf ruby-1.8.24.tgz $ cd ruby-1..8.24 $ sudo ruby setup.rb RubyGems 1.8.24 installed  == 1.8.24 / 2012-04-27  * 1 bug fix:    * Install the .pem files properly. Fixes #320   * Remove OpenSSL dependency from the http code path   ------------------------------------------------------------------------------  RubyGems installed the following executables:     /usr/bin/gem1.9.1 

Up to here, everything looked fine, but the I tried to install rails and failed:

$ sudo gem install rails Fetching: i18n-0.6.1.gem (100%) Fetching: multi_json-1.3.6.gem (100%) Fetching: activesupport-3.2.8.gem (100%) Fetching: builder-3.0.3.gem (100%) Fetching: activemodel-3.2.8.gem (100%) Fetching: rack-1.4.1.gem (100%) Fetching: rack-cache-1.2.gem (100%) Fetching: rack-test-0.6.1.gem (100%) Fetching: journey-1.0.4.gem (100%) Fetching: hike-1.2.1.gem (100%) Fetching: tilt-1.3.3.gem (100%) Fetching: sprockets-2.1.3.gem (100%) Fetching: erubis-2.7.0.gem (100%) Fetching: actionpack-3.2.8.gem (100%) Fetching: arel-3.0.2.gem (100%) Fetching: tzinfo-0.3.33.gem (100%) Fetching: activerecord-3.2.8.gem (100%) Fetching: activeresource-3.2.8.gem (100%) Fetching: mime-types-1.19.gem (100%) Fetching: polyglot-0.3.3.gem (100%) Fetching: treetop-1.4.10.gem (100%) Fetching: mail-2.4.4.gem (100%) Fetching: actionmailer-3.2.8.gem (100%) Fetching: rake-0.9.2.2.gem (100%) Fetching: rack-ssl-1.3.2.gem (100%) Fetching: thor-0.16.0.gem (100%) Fetching: json-1.7.5.gem (100%) 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/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)     from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'     from extconf.rb:1:in `<main>'   Gem files will remain installed in /usr/lib/ruby/gems/1.9.1/gems/json-1.7.5 for inspection. Results logged to /usr/lib/ruby/gems/1.9.1/gems/json-1.7.5/ext/json/ext/generator/gem_make.out 
like image 668
pata kusik Avatar asked Sep 23 '12 13:09

pata kusik


2 Answers

mkmf is part of the ruby1.9.1-dev package. This package contains the header files needed for extension libraries for Ruby 1.9.1. You need to install the ruby1.9.1-dev package by doing:

sudo apt-get install ruby1.9.1-dev 

Then you can install Rails as per normal.

Generally it's easier to just do:

sudo apt-get install ruby-dev 
like image 176
Suhail Patel Avatar answered Oct 14 '22 10:10

Suhail Patel


The suggested answer only works for certain versions of ruby. Some commenters suggest using ruby-dev; that didn't work for me either.

sudo apt-get install ruby-all-dev 

worked for me.

like image 34
user1821237 Avatar answered Oct 14 '22 11:10

user1821237