UbuntuにVagrantプラグインをインストールできません
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
プラグインをインストールしようとすると同じ問題に直面しました。どうすれば修正できますか?
はい、問題があります: https://github.com/mitchellh/vagrant/issues/707 in 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
を修正します。
パッチを適用する代わりに、ubuntu 16.04でvagrant v1.8.0を使用して問題を修正しました。
- パッケージをダウンロード:
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にアップグレードしてください...お楽しみください!
これはVagrantの最新バージョンで修正されているため、アップグレードしてください。
できない場合は、次のコマンドを実行して問題を修正します。
Sudo sed -i'' "s/Specification.all = nil/Specification.reset/" /usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb
注:Sudo
権限が必要であるか、rootなしで実行されます。
これにより、bundler.rb
file as PR(#7198) 。
bundler
も、この迷走者によって少なくとも1.12.5にアップグレードする必要があります PR(#7404) :
Sudo gem install bundler --version ">= 1.12.5"
別のプラグインでも同じエラーが発生しました:vagrant-triggers
/usr/lib/Ruby/vendor_Ruby/vagrant/bundler.rb
に適用するパッチを見つけました。
しかし、迷走者は大きなループに入り、パッケージを無限にインストールしようとします。
これまで誰も言及していないようですので、ここにUbuntu 16.04のバグレポートを示します。 https://bugs.launchpad.net/ubuntu/+source/vagrant/+bug/1562696
今のところ、16.04のパッチをバックポートしている人はいないので、 手動でパッチを適用する または 固定パッケージをダウンロードする のいずれかが必要なようです。
更新Rubyは私のために働いた。Ubuntu16.04。このガイドに従った https://www.brightbox.com/blog/2017/04/25/updated-Ruby-ubuntu- packages /