J'essayais d'installer le plugin vagrant vbguest
, mais j'ai des erreurs suivantes dans le 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>'
J'utilise Virtual Box 5.0.18_Ubuntu r106667 et Ruby 2.3.0p0. J'ai également rencontré le même problème en essayant d'installer le plugin sahara
. Comment puis-je le réparer?
Oui, il existe un problème: https://github.com/mitchellh/vagrant/issues/7073 in Vagrant 1.8.1
PR avec correctif: https://github.com/mitchellh/vagrant/pull/7198
Le correctif devrait être publié dans Vagrant 1.8.2
.
Mais jusqu’à ce que vous puissiez le patcher manuellement.
Voici les étapes pour corriger Vagrant 1.8.1
sous Ubuntu 16.04
qui a Ruby 2.3.0
.
1.) Créez le fichier vagrant-plugin.patch
avec le contenu suivant :
---
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.) Appliquer le patch:
Sudo patch --directory /usr/lib/Ruby/vendor_Ruby/vagrant < vagrant-plugin.patch
qui corrige /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb
.
Au lieu de corriger, j'ai corrigé le problème avec vagrant v1.8.0 dans 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
Gardez un œil et passez à la version 1.8.2 à la sortie de la version ...... Enjoy!
Ceci est corrigé dans la version récente de Vagrant, merci de le mettre à jour.
Si vous ne pouvez pas, exécutez cette commande pour résoudre le problème:
Sudo sed -i'' "s/Specification.all = nil/Specification.reset/" /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb
Remarque: L'autorisation Sudo
est requise ou doit être exécutée sans racine.
Cela corrigera votre fichier bundler.rb
conformément à PR (# 7198) .
Vous devriez également augmenter votre bundler
à au moins 1.12.5 selon ce vagabond PR (# 7404) :
Sudo gem install bundler --version ">= 1.12.5"
J'ai la même erreur avec un autre plugin: vagrant-triggers
J'ai trouvé un correctif à appliquer sur /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb
.
mais ainsi, vagrant entre dans une grande boucle et essaye infiniment d’installer le paquet.
Parce que personne ne semble l'avoir mentionné jusqu'à présent, voici le rapport de bogue pour Ubuntu 16.04: https://bugs.launchpad.net/ubuntu/+source/vagrant/+bug/1562696
Pour le moment, personne ne rétorquait le correctif pour 16.04, il semble donc qu'il faille soit corriger manuellement ou télécharger un paquet corrigé .
mettre à jour Ruby a fonctionné pour moi. Ubuntu 16.04 . J'ai suivi ce guide https://www.brightbox.com/blog/2017/04/25/updated-Ruby-ubuntu-packages/