【发布时间】:2015-05-01 11:56:07
【问题描述】:
我想在我的 vagrant provision bootstrap bash 文件中安装 grails(以 root 身份执行)。我尝试更改安装,如grails manual 所示:
curl -s get.gvmtool.net | sudo -u vagrant -H bash
sudo -u vagrant -H bash "$HOME/.gvm/bin/gvm-init.sh"
sudo -u vagrant -H bash gvm install grails
但这会产生错误:
bash: /root/.gvm/bin/gvm-init.sh: Permission denied
bash: gvm: No such file or directory
我做错了什么?
【问题讨论】:
-
那可能是什么错误?
-
首先你不应该运行初始化脚本,但你必须获取它。第二个问题是,
gvm是一个 shell 函数,没有脚本。我会确保采购发生在您的 vagrant 用户的 .profile 中,然后“bash -c 'gvm install grails' 可以通过 sudo 工作。尝试一下我会从sudo -u vagrant -H bash -i开始并尝试制作它首先在用户内部工作。 -
-i If the -i option is present, the shell is interactive.为什么会有帮助? vagrant provision 脚本根本不是交互式的;) -
使用本地帐户进行测试将有助于理解 gvm 的工作原理(它获取 gvm-init 并提供函数 gvm)。它必须至少是一行:
'bash -c "source ...gvm-init.sh; gvm install grails"' -
The -i (simulate initial login) option ... This means that login-specific resource files such as .profile or .login will be read by the shell. If a command is specified, it is passed to the shell for execution.