Mat*_*att 10 ruby linux ubuntu provisioning vagrant
我正在使用Vagrant使用shell配置来部署具有多个已安装软件包的虚拟机.其中一个软件包需要更新正确使用的路径,这是我无法做到的.
这些是我的Vagrantfile的内容:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
#config.vm.network "forwarded_port", guest: 8888, host: 8888
config.ssh.forward_agent = true
config.vm.provision "shell", path: "provision.sh"
end
Run Code Online (Sandbox Code Playgroud)
这些是我尝试过的以下内容:
使用以下命令(附加在文件末尾)创建单独的.bashrc和.profile文件,并将它们复制到主目录中:
export PATH="/usr/local/x86_64/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)尝试写入.profile文件:
echo 'export PATH="/usr/local/x86_64/bin:$PATH"' >> .profile
Run Code Online (Sandbox Code Playgroud)只需在配置期间尝试导出PATH(即作为provision.sh中的一行代码):
export PATH="/usr/local/x86_64/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)后vagrant up
命令完成,该命令不支持路径之后的变化vagrant ssh
.
provision.sh
根据这篇文章,将以下内容添加到文件中解决了该问题:
echo PATH $PATH
[ -f ~/.profile ] || touch ~/.profile
[ -f ~/.bash_profile ] || touch ~/.bash_profile
grep 'PATH=/usr/local/x86_64/bin' ~/.profile || echo 'export PATH=/usr/local/x86_64/bin:$PATH' | tee -a ~/.profile
grep 'PATH=/usr/local/x86_64/bin' ~/.bash_profile || echo 'export PATH=/usr/local/x86_64/bin:$PATH' | tee -a ~/.bash_profile
. ~/.profile
. ~/.bash_profile
echo PATH $PATH
Run Code Online (Sandbox Code Playgroud)
这适用于精确的64盒,所有命令应为一行。