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?
To install Vagrant on Ubuntu 20.04, we will use the command line/ terminal window of our system. At first to we will install the VirtualBox in our system so, for that open up the terminal. Use the Ctl+Alt+T shortcut to open it up or go to ApplicationsàTerminal to access the terminal window.
By default, Vagrant can provision machines on top of VirtualBox, Hyper-V, and Docker. Other providers such as Libvirt (KVM), VMware and AWS can be installed via the Vagrant plugin system. Vagrant is typically used by developers to set up a development environment that works across multiple operating systems.
Since Vagrant creates virtual operating systems, it needs a tool like VirtualBox to manage the virtual operating systems. In a terminal window, type in the following command to install VirtualBox: The system should download and install VirtualBox software. Note: There are other virtualization applications available.
To manually create a Vagrantfile type in the following touch command: This will create a blank Vagrantfile as a placeholder. The vagrant up command should then launch a default virtual environment. A text editor can also be used to edit the Vagrantfile.
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
.
Instead of patching, I fixed the issue using vagrant v1.8.0 in ubuntu 16.04:
wget https://releases.hashicorp.com/vagrant/1.8.0/vagrant_1.8.0_x86_64.deb
sudo dpkg -i vagrant_1.8.0_x86_64.deb
vagrant plugin install vagrant-vbguest
Keep an eye and upgrade to 1.8.2 when it's released... Enjoy!
This is fixed in the recent version of Vagrant, so please upgrade it.
If you can't, run this command to fix the problem:
sudo sed -i'' "s/Specification.all = nil/Specification.reset/" /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb
Note: The sudo
permission is required or run without as a root.
This will patch your bundler.rb
file as per PR (#7198).
You should also upgrade your bundler
to at least 1.12.5 as per this vagrant PR (#7404):
sudo gem install bundler --version ">= 1.12.5"
I've same error with another plugin: vagrant-triggers
I've found a patch to apply on /usr/lib/ruby/vendor_ruby/vagrant/bundler.rb
.
but so, vagrant enter in a big loop an try infinitely to install the package.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With