Can't install vagrant plugins in Ubuntu

Posted on Mar 23, 2022

Question

I was trying to install vagrant plugin vbguest, but got following errors in terminal:

$ vagrant plugin install vbguest
Installing the 'vbguest' plugin. This can take a few minutes...
/usr/lib/ruby/2.3.0/rubygems/specification.rb:946:in `all=': undefined method `group_by' for nil:NilClass (NoMethodError)
    from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:275:in `with_isolated_gem'
    from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:231:in `internal_install'
    from /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb:102:in `install'
    from /usr/lib/ruby/vendor_ruby/vagrant/plugin/manager.rb:62:in `block in install_plugin'
    from /usr/lib/ruby/vendor_ruby/vagrant/plugin/manager.rb:72:in `install_plugin'
    from /usr/share/vagrant/plugins/commands/plugin/action/install_gem.rb:37:in `call'
    from /usr/lib/ruby/vendor_ruby/vagrant/action/warden.rb:34:in `call'
    from /usr/lib/ruby/vendor_ruby/vagrant/action/builder.rb:116:in `call'
    from /usr/lib/ruby/vendor_ruby/vagrant/action/runner.rb:66:in `block in run'
    from /usr/lib/ruby/vendor_ruby/vagrant/util/busy.rb:19:in `busy'
    from /usr/lib/ruby/vendor_ruby/vagrant/action/runner.rb:66:in `run'
    from /usr/share/vagrant/plugins/commands/plugin/command/base.rb:14:in `action'
    from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:32:in `block in execute'
    from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:31:in `each'
    from /usr/share/vagrant/plugins/commands/plugin/command/install.rb:31:in `execute'
    from /usr/share/vagrant/plugins/commands/plugin/command/root.rb:56:in `execute'
    from /usr/lib/ruby/vendor_ruby/vagrant/cli.rb:42:in `execute'
    from /usr/lib/ruby/vendor_ruby/vagrant/environment.rb:268:in `cli'
    from /usr/bin/vagrant:173:in `<main>'

I am using Virtual Box 5.0.18_Ubuntu r106667 and ruby 2.3.0p0. I also faced the same problem trying to install sahara plugin. How can I fix it?

Answer

Yes, there is an issue: https://github.com/mitchellh/vagrant/issues/7073 in Vagrant 1.8.1

PR with fix: https://github.com/mitchellh/vagrant/pull/7198

The fix should be released in Vagrant 1.8.2.


But until that you can patch it manually.

Here are the steps to fix Vagrant 1.8.1 under Ubuntu 16.04 which has ruby 2.3.0.

1.) Create file vagrant-plugin.patch with the following contents:

---
 lib/vagrant/bundler.rb | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff –git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb index 5a5c185..c4a3837 100644 — a/lib/vagrant/bundler.rb +++ b/lib/vagrant/bundler.rb @@ -272,7 +272,6 @@ module Vagrant

   # Reset the all specs override that Bundler does
   old_all = Gem::Specification._all
  •  Gem::Specification.all = nil
    
     # /etc/gemrc and so on.
     old_config = nil
    

@@ -286,6 +285,8 @@ module Vagrant end Gem.configuration = NilGemConfig.new

  •  Gem::Specification.reset
    

+ # Use a silent UI so that we have no output Gem::DefaultUserInteraction.use_ui(Gem::SilentUI.new) do return yield

2.) Apply patch:

sudo patch --directory /usr/lib/ruby/vendor_ruby/vagrant < vagrant-plugin.patch

which fixes /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb.