Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing gems results in error

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem 2.0.3

sudo gem install travis
Building native extensions.  This could take a while...
ERROR:  Error installing travis:
        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:4:in `<main>'


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

Also encountering this when trying to install other gems. I'm not a Ruby user, and googling the error did not get me any working solution.

I installed Ruby 2.0 using RVM: "curl -L https://get.rvm.io | bash -s stable --ruby".

If I do "sudo ruby -v" I get "ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]".

like image 884
Jeroen De Dauw Avatar asked Aug 09 '13 13:08

Jeroen De Dauw


People also ask

What is the difference between gem install and bundle install?

Almost seems like running 'gem install' adds it to the global available gems (and hence terminal can run the package's commands), whereas adding it to the gemfile and running bundle install only adds it to the application. Similar to npm install --global. that's basically it.


1 Answers

It looks like you're using Ruby 1.9.1 installed via the system. In order to fix that error, you should install the ruby-dev package.

In Debian/Ubuntu,

sudo apt-get install ruby1.9.1-dev.

Since the gem uses native extensions, you should also do a

sudo apt-get install build-essentials

before that.

However, I would strongly recommend using RVM and using the RVM ruby, since it pulls all most of the dev dependencies for your system and you don't have native extension problems so often.

like image 90
Ivan Zarea Avatar answered Sep 28 '22 06:09

Ivan Zarea