it-swarm.com.de

Vagrant-Plugins können nicht in Ubuntu installiert werden

Ich habe versucht, das vagrant-Plugin vbguest zu installieren, bekam jedoch folgende Fehler im 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>'

Ich verwende Virtual Box 5.0.18_Ubuntu r106667 und Ruby 2.3.0p0. Ich hatte auch das gleiche Problem, als ich sahara plugin installierte. Wie kann ich es reparieren?

40
Sergey Scherba

Ja, es gibt ein Problem: https://github.com/mitchellh/vagrant/issues/7073 in Vagrant 1.8.1

PR mit Fix: https://github.com/mitchellh/vagrant/pull/7198

Das Update sollte in Vagrant 1.8.2 veröffentlicht werden.


Aber bis dahin können Sie es manuell patchen.

Hier sind die Schritte, um Vagrant 1.8.1 unter Ubuntu 16.04 zu beheben, der Ruby 2.3.0 hat.

1.) Erstellen Sie die Datei vagrant-plugin.patch mit mit folgendem Inhalt :

---
 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.) Patch anwenden:

Sudo patch --directory /usr/lib/Ruby/vendor_Ruby/vagrant < vagrant-plugin.patch

was /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb behebt.

67
arma

Anstatt zu patchen, habe ich das Problem mit vagrant v1.8.0 in Ubuntu 16.04 behoben:

  • Paket herunterladen: 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

Behalten Sie ein Auge auf und aktualisieren Sie auf 1.8.2, wenn es veröffentlicht wird ...

17
steinkel

Dieses Problem wurde in der aktuellen Version von Vagrant behoben. Aktualisieren Sie es daher.

Wenn Sie dies nicht tun können, führen Sie diesen Befehl aus, um das Problem zu beheben:

Sudo sed -i'' "s/Specification.all = nil/Specification.reset/" /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb

Anmerkung: Die Berechtigung "Sudo" ist erforderlich oder wird als Root ausgeführt.

Dadurch wird Ihre bundler.rb-Datei gemäß PR (# 7198) gepatcht.

Sie sollten auch Ihre bundler auf mindestens 1.12.5 nach diesem Vagrant PR (# 7404) erweitern.

Sudo gem install bundler --version ">= 1.12.5"
8
kenorb

Ich habe denselben Fehler mit einem anderen Plugin: vagrant-triggers

Ich habe einen Patch für /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb gefunden.

aber so treten vagrant in eine große schleife ein und versuchen unendlich, das paket zu installieren.

2
Moosh

Da es bisher noch niemand erwähnt zu haben scheint, hier der Fehlerbericht für Ubuntu 16.04: https://bugs.launchpad.net/ubuntu/+source/vagrant/+bug/1562696

Bis jetzt hat niemand den Patch für 16.04 zurückportiert, es scheint also, dass entweder patch manuell oder ein festes Paket heruntergeladen werden muss.

0
Frederick Nord

update Ruby arbeitete für mich. Ubuntu 16.04 .. Ich folgte diesem Leitfaden https://www.brightbox.com/blog/2017/04/25/updated-Ruby-ubuntu-packages/

0
LingYong Sun