567

I was trying to install rails on Ubuntu Natty Narwhal 11.04, using ruby1.9.1.

I installed ruby using apt-get install ruby1.9.1-full which contains the dev package. I googled the error and all have suggested I install the 1.9.1-dev which I already have.

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb
extconf.rb:36:in `require': no such file to load -- mkmf (LoadError)
    from extconf.rb:36


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out
Kara
  • 5,650
  • 15
  • 48
  • 55
Omar S.
  • 7,650
  • 3
  • 28
  • 38
  • 1
    I had a parallel error attempting to install watir-webdriver. It also was corrected by installing ruby1.0.1-dev – kaleidic May 02 '13 at 11:27
  • possible duplicate of [Rails installation failed on Ubuntu with "cannot load such file -- mkmf"](http://stackoverflow.com/questions/12731904/rails-installation-failed-on-ubuntu-with-cannot-load-such-file-mkmf) – David LeBauer Jul 01 '14 at 14:56

10 Answers10

980

After some search for a solution it turns out the -dev package is needed, not just ruby1.8. So if you have ruby1.9.1 doing

sudo apt-get install ruby1.9.1-dev

or to install generic ruby version, use (as per @lamplightdev comment):

sudo apt-get install ruby-dev

should fix it.

Try locate mkmf to see if the file is actually there.

Jeshua Lacock
  • 4,342
  • 1
  • 24
  • 48
Emil Ivanov
  • 35,757
  • 11
  • 70
  • 90
  • 220
    the following will install the dev package matched to your currently installed ruby version: sudo apt-get install ruby-dev – lamplightdev Jan 02 '13 at 18:21
  • yeah worked for me. run ruby -v to find the version if you only want to install the current ruby version. – Dan Bradbury Jul 02 '13 at 16:52
  • 3
    @lamplightdev Didnt work for me, ruby version was 1.9.3 and it was installing 1.8 If I tried to install ruby-dev – Karthik T Sep 05 '13 at 00:12
  • 1
    I've installed `ruby-all-dev`, it will probably work for all versions. – jcubic Jul 07 '14 at 13:38
  • This is also required for aws-sdk now that SOAP is deprecated for AWS. A worry if stakeholders object to anything -dev on a production build. (SDK's don't thrill them either). – mckenzm Dec 20 '14 at 20:47
185

This is the answer that worked for me. Was in the comments above, but deserves its rightful place as answer for ubuntu 12.04 ruby 1.8.7

sudo apt-get install ruby-dev
# if above doesnt work make sure you have build essential
sudo apt-get install build-essential
jmontross
  • 3,415
  • 1
  • 19
  • 17
  • It's also worth noting that if you want to use the ubuntu software center there is an add-on for ruby-dev you can select for the 'Header files for compiling extension modules'. – RightHandedMonkey Aug 13 '13 at 01:38
  • I used `sudo apt-get install ruby1.9.1-dev` with ruby 1.9.3 before I saw the comment or this answer, and that allowed me to build the rails extension. Not sure if mismatching versions like that is going to cause me any headache later, but it should be noted that rails installed correctly using a slight alteration of the officially accepted answer. – DWils Mar 16 '14 at 04:54
  • What if you have RVM? Then don't you already have the ruby version you need? – thesecretmaster May 28 '16 at 16:36
37

I also needed build-essential installed:

sudo apt-get install build-essential
James Dunmore
  • 1,160
  • 9
  • 15
  • This was the ticket right here.. I imagine I had to also install ruby-dev but it didn't work until I installed build-essential as well. a million thanks – unc0nnected Nov 22 '15 at 22:49
30

The problem is still is recursive on Ubuntu 13/04/13.10/14.04

and

sudo apt-get install ruby1.9.1-dev

worked out for me okay. So If you are using Ubuntu 13.04/13.10/14.04 then using this will really come in handy.

This works even if ruby version is 1.9.3. This is because there is no ruby1.9.3-dev available in the Repository...

kenju254
  • 451
  • 4
  • 6
  • 1
    Yep, this one worked for me as well on ruby1.9.3. There wasn't a package in the ubuntu repository for ruby1.9.3-dev. – DWils Mar 16 '14 at 04:56
  • 1
    not any more... worked after installing rvm from rvm.io with --ruby - and probably best to apt-get remove ruby before – dagelf Oct 05 '17 at 22:28
18

Have you tried:

sudo apt-get install ruby1.8-dev
Matteo Alessani
  • 9,864
  • 4
  • 37
  • 56
10

I got the similar error when install bundle

sudo apt-get install ruby-dev

Works great for me and solve the problem Mint 16 ruby1.9.3

Sergey Nikolaev
  • 658
  • 1
  • 6
  • 15
2

I think is a little late but

sudo yum install -y gcc ruby-devel libxml2 libxml2-devel libxslt libxslt-devel

worked for me on fedora.

http://nokogiri.org/tutorials/installing_nokogiri.html

JGutierrezC
  • 3,788
  • 4
  • 22
  • 41
1

You've Ruby 1.8 so you need to upgrade to at least 1.9 to make it working.

If so, then check How to install a specific version of a ruby gem?

If this won't help, then reinstalling ruby-dev again.

Community
  • 1
  • 1
kenorb
  • 118,428
  • 63
  • 588
  • 624
0

You can use RVM(Ruby version manager) which helps in managing all versions of ruby on your machine , which is very helpful for you development (when migrating to unstable release to stable release )

or for Linux (ubuntu) go for sudo apt-get install ruby1.8-dev

then sudo gem install rails to verify it do rails -v it will show version on rails

after that you can install bundles (required gems for development)

Mohit Verma
  • 1,384
  • 1
  • 16
  • 28
0

Ruby version: 2.7.1 gem version: 3.1.3

You need to check the extension that could not be installed, and find the reasons.

Read the mkmf.log file showed at the installation error under "To see why this extension failed to compile, please check the mkmf.log which can be found here" , perhaps there is a missing lib ( sometimes iconv ), and you must install it.

You can search the extension with your package manager(apt, yum, pacman...) too.

(Personal case) Arch Linux->nokogiri

gem install rails

Showed me:

To see why this extension failed to compile, please check the mkmf.log which can be found here: /home/user/.gem/ruby/2.7.0/extensions/x86_64-linux/2.7.0/nokogiri-1.10.9/mkmf.log

Go to: https://aur.archlinux.org/packages/ruby-nokogiri/

  1. Make sure you have all dependencies installed
  2. Make sure you have make installed
  3. git clone the package
  4. cd to package
  5. makepkg the package

Hope to help!