Precision64(ubuntu 14.04)を使用してバグラントボックスを設定し、octopressに必要なパッケージをインストールしました。 Vagrant BoxにSSHでアクセスして投稿を作成し、私のoctopressサイトのプレビューを実行できます。
マシンの起動後に次のコマンドを自動的に実行する設定スクリプトを生成したいと思います。
gem install bundler
rbenv rehash
bundle install
rake install
rake generate
rake preview
だから、上記のコマンドを使用してシェルスクリプトを作成しました。ただし、vagrant upまたはvagrant Provisionを実行しようとすると、次のエラーが発生します。
==> default: ERROR: While executing gem ... (Gem::FilePermissionError)
==> default: You don't have write permissions into the /opt/vagrant_ruby/lib/ruby/gems/1.8 directory.
==> default: bash: rbenv: command not found
私のVagrantfileの設定は次のとおりです。私も特権オプションを現実にしようとしました。
config.vm.provision :shell, :privileged => false, :upload_path => "/home/vagrant/octopress/start.sh", :path => "start.sh"
私がここで何を間違っているのか?
上記のログに示すように、構成スクリプトは/opt/vagrant_ruby/lib/ruby/gemsディレクトリのgemを使用しようとします。ただし、vagrant boxにsshを接続してgemとrbenvの場所を確認すると、このパッケージはユーザーのホームディレクトリ(/home/vagrant)内にあります。問題は、構成スクリプトが「vagrant」ユーザーの環境変数を使用していないようです。ちなみにスクリプトでwhoamiを確認すると出力が放浪するようになります。
放浪者ユーザーの変数で構成スクリプトを実行する方法はありますか?
答え1
この放浪プラグインは私の問題を解決しました。
vagrant up
仮想マシンの後に構成スクリプトを実行できます。
config.trigger.after :command, :option => "value" do
run "script"
...
end
sudo
そしてコマンドに追加することを忘れないでください。