Ruby 使用shell配置更新Vagrant中的路径
我正在使用Vagrant部署一个虚拟机,其中包含几个使用shell资源调配安装的软件包。其中一个软件包需要更新路径才能正确使用,但我无法做到这一点 以下是我的流浪汉档案的内容:Ruby 使用shell配置更新Vagrant中的路径,ruby,linux,ubuntu,vagrant,provisioning,Ruby,Linux,Ubuntu,Vagrant,Provisioning,我正在使用Vagrant部署一个虚拟机,其中包含几个使用shell资源调配安装的软件包。其中一个软件包需要更新路径才能正确使用,但我无法做到这一点 以下是我的流浪汉档案的内容: # -*- 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
# -*- 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
以下是我尝试过的事情:
export PATH="/usr/local/x86_64/bin:$PATH"
echo 'export PATH="/usr/local/x86_64/bin:$PATH"' >> .profile
在
vagrant up
命令完成后,此命令确实允许更改以下路径vagrant ssh
基于此将以下内容添加到provision.sh
文件中,从而解决了问题:
这适用于精确64框,所有命令应为一行 使用Ex/vi编辑器的示例:
ex +'$s@$@\rexport PATH=/var/lib/vendor/bin:$PATH@' -cwq /etc/bash.bashrc
其中附加:
export PATH=/var/lib/vendor/bin:$PATH
进入全局/etc/bash.bashrc
文件(因此它可供使用bash
shell的所有用户使用,或使用/etc/profile
用于所有Bourne shell)
或者简单地使用cat
,例如:
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
我有一个非常类似的问题。但在我的例子中,我不得不以一个流浪用户的身份使用你的脚本,而不是以root用户的身份。由于vagrant在配置期间默认为root,因此我必须添加特权标志:
config.vm.provision:shell,路径:'android_update.sh',priviliged:false
。PS:可以使用多个shell脚本提供程序。
export PATH=/var/lib/vendor/bin:$PATH
cat >> ~/.bashrc <<EOF
export PATH=~/.composer/vendor/bin:\$PATH
EOF
- name: Update bashrc to add new PATH entry:
dest=/home/vagrant/.bashrc
line="export PATH='/usr/local/x86_64/bin:$PATH'"
regexp="^export PATH"
owner=vagrant
state=present
insertafter=EOF
create=True