设置基于 Linux 的流浪汉盒子和配置,我正在研究以下问题:
在配置阶段,我正在安装 Subversion。我还想在配置阶段编辑文件,~/.subversion/servers
以便获得必要的代理设置。
我知道如何做到这一点(使用sed
),但是有一个问题。
~/.subversion
此时不存在。
直到您第一次调用 或其他操作时,目录~/.subversion
才会真正被创建。svn info
svn status
因此我将其添加到了我的 Vagrantfile...
config.vm.provision "shell", inline: "svn info 2>/dev/null"
...和命令做执行(出现错误,因为当然没有可以调用的工作目录info
)...
==> default: Running provisioner: shell...
default: Running: inline script
The SSH command responded with a non-zero exit status. Vagrant
assumes that this means the command failed. The output for this command
should be in the log above. Please read the output to determine what
went wrong.
...但仍然没有~/subversion
。
我不太明白为什么,当我登录到虚拟机(通过)时svn info
,该技巧(设置的)可以正常工作,但是在配置过程中执行时会失败,如上所示。~/.subversion
vagrant ssh
如何~/.subversion
在 Vagrant 配置阶段进行初始化(无需实际访问真实的 repo)?
答案1
config.vm.provision“shell”,内联:“svn info 2> / dev / null”
此行运行作为用户root
。
因此, 不成立~vagrant/.subversion
,但是/root/.subversion
。
解决方案是以用户身份运行该行vagrant
:
config.vm.provision "shell", inline: "svn info 2>/dev/null", privileged: false
更好的是,运行命令"svn info 2>/dev/null; true"
——这可以摆脱 Vagrant 报告,即配置命令返回非零退出状态。