Failed to build gem native extension nio4r in Vagrant SSH windows 7 32-bit

580 views Asked by At

I'm setting up Rails environment using Vagrant with the box ubuntu/trusty32 in Windows 7 32-bit host. I'm stuck with bundle install --path=./vendor/bundle. I got the following error:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /vagrant/vendor/bundle/ruby/2.4.0/gems/nio4r-2.1.0/ext/nio4r
/home/vagrant/.rbenv/versions/2.4.1/bin/ruby -r ./siteconf20170911-24730-8nkvsn.rb extconf.rb
checking for unistd.h... yes
checking for sys/select.h... yes
checking for poll.h... yes
checking for sys/epoll.h... yes
checking for sys/event.h... no
checking for port.h... no
checking for sys/resource.h... yes
creating Makefile

Text file busy @ unlink_internal - ./siteconf20170911-24730-8nkvsn.rb

Gem files will remain installed in /vagrant/vendor/bundle/ruby/2.4.0/gems/nio4r-2.1.0 for inspection.
Results logged to /vagrant/vendor/bundle/ruby/2.4.0/extensions/x86-linux/2.4.0-static/nio4r-2.1.0/gem_make.out

An error occurred while installing nio4r (2.1.0), and Bundler cannot continue.
Make sure that `gem install nio4r -v '2.1.0'` succeeds before bundling.

In Gemfile:
  rails_admin was resolved to 1.2.0, which depends on
    rails was resolved to 5.0.6, which depends on
      actioncable was resolved to 5.0.6, which depends on
        nio4r

The problem seems to be the issue of the gem nio4r. I have tried these:

  • gem install bundler
  • bundle update
  • gem uninstall nio4r
  • gem install nio4r (this successfully installed the gem)
  • rm Gemfile.lock
  • bundle install

None of the above works. I also tried this:

sudo apt-get install ruby2.2-dev

But it couldn't find the package.

E: Unable to locate package ruby2.2-dev
E: Couldn't find any package by regex 'ruby2.2-dev'
1

There are 1 answers

0
Sithu On BEST ANSWER

The error mainly addresses to the message Text file busy @ unlink_internal - ./siteconf20170911-24730-8nkvsn.rb. I found a solution and I followed the steps described in the article.

By changing bundle path to a directory that's local to the VM (not on a shared folder) made the error gone away.

  1. Create a new directory

    mkdir ~/.bundles
    
  2. Add this to /vagrant/.bundle/config

    BUNDLE_PATH: "/home/vagrant/.bundles/PROJECT_NAME_HERE"
    BUNDLE_DISABLE_SHARED_GEMS: "1"
    
  3. Run bundle install