2016-06-24 11 views
0

gag、openjdk7、docker、gvm(go)、nvm(node)の付いたVagrantボックス「thdengops/ubuntu-14.04-dev」を使用しています。 、rvm(ruby)、jenv(java)、virtualenv(python)などがあらかじめインストールされています。vagrantプロビジョニングでrvmが事前にインストールされていないと見つかりません

私は、rvmを使ってRuby 2.5.1をインストールしようとしているプロビジョニングシェルスクリプトを作成し、それを使用中の現在のルビーバージョンとして設定しました。しかし、プロビジョニングスクリプトは、rvm: command not foundと言って失敗しています。私はプロビジョニングなしで私がvagrant upのようにインストールされていることを知っています。私はこれが私が間違っているいくつかの許可事項だと確信していますが、私はVagrantにはまだ新しく、現時点では基本を過ぎてbash/linuxの専門家ではありません。

これらのエラーが発生する原因は何ですか?私は下の完全な迷惑メールファイルとプロビジョニングスクリプトに貼り付けたので、エラーを再現するために最新の迷惑メールにそれらを置くことができるはずです。

Vagrantfile:

Vagrant.configure(2) do |config| 
    config.vm.box = "thdengops/ubuntu-14.04-dev" 

    config.vm.provision "shell", path: "provision.sh" 
end 

provision.sh端末から

#!/bin/bash 
RUBY_VERSION="2.3.1" 

apt-get -y update 

if ! rvm list rubies ruby | grep ruby-${RUBY_VERSION}; then 
    rvm install ${RUBY_VERSION} 
fi 

rvm --default use ${RUBY_VERSION} 

gem install bundler 

エラー

==> default: /tmp/vagrant-shell: line 6: rvm: command not found 
==> default: /tmp/vagrant-shell: line 7: rvm: command not found 
==> default: /tmp/vagrant-shell: line 10: rvm: command not found 

答えて

1

パッケージはそうあなたにsshをするとき浮浪者ユーザー用にインストールされている可能性が最も高いですボックスの迷惑メールユーザーはこのコマンドを実行できます。あなたは、あなたがそのようなaptコマンドとしてsudo

+0

おかげでいくつかのコマンドを実行することを確認する必要があります。この場合には

config.vm.provision "shell", privileged: false, path: "provision.sh" 

このプロビジョニングを実行するために浮浪者が必要になりますので、しかしプロビジョニングは、デフォルトではrootによって実行され、これがそうです元の問題を解決しました。しかし、今では 'RVMは関数ではなく、' rvm use ... 'でルビーを選択することはできません。これは新しくインストールされたバージョンに切り替える最後の行によって引き起こされます。これを回避する方法は?私は技術的に問題を解決するので、答えは受け入れられているとマークしました。 –

+0

エラーは何ですか?私は時間がたっても再現しようとします –

+0

'RVMは関数ではなく、 'rvm use ...'でルビを選択すると機能しません。' - これは実行された新しいルビインストールに切り替えるときに表示されますrvm(プロビジョニングスクリプトの10行目)。それは本当に感謝している、私は得ることができるものを見るためにまだフィドルを持っているが、私はまったく運がない。 '特権:false'ですべてを動かすなら、それを得るべきです。 –

関連する問題