it-swarm.com.ru

Не могу установить бродячие плагины в Ubuntu

Я пытался установить плагин vagrant vbguest, но получил следующие ошибки в терминале:

$ 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>'

Я использую Virtual Box 5.0.18_Ubuntu r106667 и Ruby 2.3.0p0. Я также столкнулся с той же проблемой, пытаясь установить плагин sahara. Как я могу это исправить?

40
Sergey Scherba

Да, есть проблема: https://github.com/mitchellh/vagrant/issues/7073 в Vagrant 1.8.1

PR с исправлением: https://github.com/mitchellh/vagrant/pull/7198

Исправление должно быть выпущено в Vagrant 1.8.2.


Но до этого вы можете исправить это вручную.

Вот шаги, чтобы исправить Vagrant 1.8.1 под Ubuntu 16.04, который имеет Ruby 2.3.0.

1.) Создайте файл vagrant-plugin.patch с следующим содержимым :

---
 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.) Применить патч:

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

который исправляет /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb.

67
arma

Вместо исправления я исправил проблему с помощью vagrant v1.8.0 в 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

Следите за обновлениями до версии 1.8.2, когда она выйдет ... Наслаждайтесь!

17
steinkel

Это исправлено в последней версии Vagrant, поэтому обновите его.

Если вы не можете, выполните эту команду, чтобы решить проблему:

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

Примечание. Разрешение Sudo требуется или выполняется без прав root.

Это исправит ваш bundler.rb файл согласно PR (# 7198) .

Вы также должны обновить вашу bundler по крайней мере до 1.12.5 согласно этому бродяжнику PR (# 7404) :

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

У меня та же ошибка с другим плагином: vagrant-triggers

Я нашел патч для применения на /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb.

но так, vagrant введите большой цикл и попробуйте бесконечно установить пакет.

2
Moosh

Поскольку, кажется, никто не упомянул об этом до сих пор, вот отчет об ошибке для Ubuntu 16.04: https://bugs.launchpad.net/ubuntu/+source/vagrant/+bug/1562696

На данный момент никто не перенес патч на 16.04, поэтому, похоже, придется либо патч вручную или загрузить фиксированный пакет .

0
Frederick Nord

обновление Ruby у меня сработало. Ubuntu 16.04 . Я следовал этому руководству https://www.brightbox.com/blog/2017/04/25/updated-Ruby-ubuntu-packages/

0
LingYong Sun