以前に vagrant 内にプラグインをインストールしました。現在、別の MacBook に、古い MacBook で使用していたものと同じプラグインをいくつかインストールしようとしています。
たとえば、vagrant-hostmanager をインストールしようとすると、Ruby パーミッション エラーが発生します。
$ vagrant plugin install vagrant-hostmanager
Installing the 'vagrant-hostmanager' plugin. This can take a few minutes...
Bundler, the underlying system Vagrant uses to install plugins,
reported an error. The error is shown below. These errors are usually
caused by misconfigured plugin installations or transient network
issues. The error from Bundler is:
An error occurred while installing ffi (1.9.8), and Bundler cannot continue.
Make sure that `gem install ffi -v '1.9.8'` succeeds before bundling.
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/opt/vagrant/embedded/bin/ruby extconf.rb
checking for ffi.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/opt/vagrant/embedded/bin/ruby
--with-ffi_c-dir
--without-ffi_c-dir
--with-ffi_c-include
--without-ffi_c-include=${ffi_c-dir}/include
--with-ffi_c-lib
--without-ffi_c-lib=${ffi_c-dir}/
--with-libffi-config
--without-libffi-config
--with-pkg-config
--without-pkg-config
/opt/vagrant/embedded/lib/ruby/2.0.0/tmpdir.rb:92:in `mktmpdir': parent directory is world writable but not sticky (ArgumentError)
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:510:in `try_link0'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:427:in `have_devel?'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:433:in `try_do'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:549:in `block in try_compile'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:502:in `with_werror'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:549:in `try_compile'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:1044:in `block in have_header'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:895:in `block in checking_for'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels) in postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:310:in `open'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:336:in `postpone'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for'
from /opt/vagrant/embedded/lib/ruby/2.0.0/mkmf.rb:1043:in `have_header'
from extconf.rb:16:in `<main>'
Gem files will remain installed in /Volumes/Passport/vagrant.d/gems/gems/ffi-1.9.8 for inspection.
Results logged to /Volumes/Passport/vagrant.d/gems/gems/ffi-1.9.8/ext/ffi_c/gem_make.out
異なる点の 1 つは、ローカル SSD のスペースが不足しているため、.bashrc で次のように定義したことです。
export VAGRANT_HOME=/Volumes/Passport/vagrant.d
そのため、貴重な SSD スペースを食いつぶす代わりに、ボックス ファイルを 2TB USB3 ドライブに保存しています。
これで、sudo を使用してプラグインのインストールを実行できましたが、これはカスケードの問題になり、実行しvagrant up
ないと Vagrantfile 内のプラグインを表示できなくなりますsudo vagrant up
。そして、VM は root によって所有されます... これがどのように制御不能になるかを確認できます。
誰が何が悪いのか知っていますか?どうすれば解決できますか?
編集:VAGRANT_HOME
デフォルト値の に戻すと~/.vagrant.d
、プラグインをインストールできることがわかりましたが、ボックスは現在、デフォルト設定ではアクセスできないボリュームにあります。どうやらこれはRubyの制限です。
ティア!