POL*_*LOX 3 ruby provisioning rvm vagrant vagrantfile
我试图使用以下脚本在流浪汉文件中使用rvm在vagrant用户中设置versiónruby版本:
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get -y update
sudo apt-get -y install git ruby libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
nodejs
#Install ruby environment
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L https://get.rvm.io | bash -s stable
sudo "source ~/.rvm/scripts/rvm"
echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
sudo /usr/local/rvm/bin/rvm install 2.1.5
rvm 2.1.5 --default
sudo chown -R vagrant:vagrant /usr/local/rvm/gems/
gem install middleman
git clone XXXX
SHELL
END
Run Code Online (Sandbox Code Playgroud)
Vagrant给我回复了以下信息:
/tmp/vagrant-shell: line 10: rvm: command not found
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用完整路径运行命令,它将返回以下消息:
/usr/local/rvm/bin/rvm 2.1.5 --default
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for an example.
Run Code Online (Sandbox Code Playgroud)
无论如何以记录模式或其他方式执行内联脚本以使用rvm来设置默认版本?
谢谢 :)
对所提供脚本的更改将阻止上述代码以退出状态错误退出.
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provision "shell", inline: <<-SHELL
RUBY_VERSION="2.1.5"
sudo apt-get -y update
sudo apt-get -y install git nodejs
# Install ruby environment
if ! type rvm >/dev/null 2>&1; then
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L https://get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
fi
if ! rvm list rubies ruby | grep ruby-${RUBY_VERSION}; then
rvm install ${RUBY_VERSION}
fi
rvm --default use ${RUBY_VERSION}
rvm all do gem install middleman
git clone <REPLACE_WITH_YOUR_REPO>
SHELL
end
Run Code Online (Sandbox Code Playgroud)
变更说明:
vagrant用户身份运行脚本,但在最近的版本中这已经发生了变化.脚本实际上将以root身份运行; 由于privilegedshell脚本上的选项,默认情况下会发生这种情况; 请参阅Shell Provisioner.如果您不确定哪个用户正在运行,您可以whoami在脚本中执行操作.如果通过设置降级权限,脚本将作为vagrant用户运行privileged => false.替代和更灵活的方法
如果您不停留使用内联脚本.我会按照使用RVM和Vagrant中的描述去路线.我在上面提出的一些建议将重新应用于本文中脚本的一般逻辑.需要进行的一项更改是在install-rvm.sh脚本中.添加GPG密钥导入; 如下所示:
#!/usr/bin/env bash
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://get.rvm.io | bash -s $1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8004 次 |
| 最近记录: |