Ubuntu – Error: Failed to build gem native extension when trying to download Rubocop


when I try "sudo gem install rubocop", I get…

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

    current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 mkrf_conf.rb

current directory: /var/lib/gems/2.3.0/gems/rainbow-2.2.1/ext
/usr/bin/ruby2.3 -rubygems /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake RUBYARCHDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1 RUBYLIBDIR=/var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1
/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

rake failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/rainbow-2.2.1 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/rainbow-2.2.1/gem_make.out

So I have tried a number of solutions, specifically those from https://stackoverflow.com/questions/22544754/failed-to-build-gem-native-extension-installing-compass (different gem, same error)

I tried reinstalling RVM with
"rvm reinstall –disable-binary 2.2.0"
which took a while but didn't fix it

next i tried $ "sudo apt-get install ruby-dev" which yields

Reading package lists... Done
Building dependency tree       
Reading state information... Done
ruby-dev is already the newest version (1:2.3.0+1).
The following packages were automatically installed and are no longer required:
  dkms linux-headers-4.4.0-53 linux-headers-4.4.0-53-generic
  linux-image-4.4.0-53-generic linux-image-extra-4.4.0-53-generic
  python-appindicator python-gconf python-gi python-glade2
  python-gobject python-pexpect python-ptyprocess python-xdg
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 40 not upgraded.

I've also tried "gem update –system" to which I get…

Latest version currently installed. Aborting.

Any suggestions will be greatly appreciated as I am a total noob and I'm stuck.

Best Answer

Do sudo gem install rake and then do sudo gem install rubocop again and it should work.

It doesn't seem to matter that you have the right version of rake installed. For me rake --version reported 10.5.0 but I was still getting the same error message as you.

Looking at the error message, it is looking for rake at a specific path, not just anywhere on my PATH:

/usr/bin/ruby2.3: No such file or directory -- /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake (LoadError)

which rake reports /usr/local/bin/rake, not /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake.

And in fact, as the error message says, there is no file at /usr/share/rubygems-integration/all/gems/rake-10.5.0/bin/rake.

This is probably to do with rake having been apt-get installed rather than gem installed. sudo gem install rake creates that file.

Related Question