我正在使用这个vagrantfile:
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
...bla bla bla bla bla...
config.vm.provision "shell", path: "provision/setup.sh", privileged: false
end
在我的 setup.sh 中,我有:
sudo apt-get update
sudo apt-get install --yes git-all libreadline-dev build-essential curl git m4 python-setuptools ruby texinfo libbz2-dev libcurl4-openssl-dev libexpat-dev libncurses-dev zlib1g-dev
yes | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)"
echo PATH=$HOME/.linuxbrew/bin:$PATH >> ~/.bashrc
export PATH=$HOME/.linuxbrew/bin:$PATH
brew doctor
然后我有:
brew install rbenv ruby-build
brew update
brew upgrade
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
. ~/.bashrc
rbenv init
rbenv install 2.3.0
rbenv global 2.3.0
rbenv local 2.3.0
rbenv versions
gem install bundler
但是我收到了这个错误:
==> default: ERROR: While executing gem ... (Errno::EACCES) ==> default: Permission denied - /var/lib/gems`
如何安装" bundler"和其他"宝石"用我的设置脚本?
答案 0 :(得分:0)
在脚本中运行sudo并不是一个好主意,但尝试使用
对脚本进行sudoing$ sudo ./script.sh
并从你的sh脚本中取出所有'sudos'。
下一步更改
config.vm.provision "shell", path: "provision/setup.sh", privileged: false
到
config.vm.provision "shell", path: "provision/setup.sh", privileged: true
这样sudo只对文件解锁,并且可以控制你正在做的任何事情。
如果这是机器中的新文件,您可能需要使用
chmod +x ./script.sh
让你的操作系统正确执行它。从我看到的情况来看,事情应该可以正常工作,除非你不小心配置你的vm两次,你可能想要覆盖它。您也可以尝试自己运行每个命令,看看它是否是流浪者之外的孤立问题。
修改强> 主要问题是/ var / lib / gems目录是root用户所拥有的,所以无论如何都可以在sudo命令下获得它。
编辑:清晰度很高。