使用 Vagrantfile 在 Vagrant 中运行脚本时的权限

使用 Vagrantfile 在 Vagrant 中运行脚本时的权限

我已经创建了一个用于运行 rails 应用程序的 vagrant box,并且我已设法手动创建它。

我的下一步是创建一个可以包含在 Vagrantfile 中的 shell 脚本,这样在创建新的框时,所有安装都会自动完成。

但当我到达那条线时:

source ~/.bash_profile 

我收到这个错误

mkdir: cannot create directory `/home/vagrant/.rbenv/shims': Permission denied
mkdir: cannot create directory `/home/vagrant/.rbenv/versions': Permission denied

通过 CLI 运行良好

有任何想法吗?

更新

我已经修复了 mkdir 错误,并且脚本从头到尾运行没有明显的错误。

现在,当我vagrant ssh检查我的主目录时,我没有找到我使用脚本下载和安装的任何 git 存储库,也没有找到 .bash_profile,因此我无法rbenv

知道为什么会发生这种情况吗?我做错了什么?

vagrant@precise64:~$ ls -a
.   .bash_history    .cache          .profile  .sudo_as_admin_successful  .veewee_version
..  .bash_logout   .bashrc        postinstall.sh  .ssh      .vbox_version
vagrant@precise64:~$ 

这是setup.sh:

# Update sources:
sudo apt-get -y update

# Install development tools:
sudo apt-get -y install build-essential

# Packages required for compilation of some stdlib modules
sudo apt-get -y install tklib 

# Extras for RubyGems and Rails:
sudo apt-get -y install zlib1g-dev libssl-dev

# Readline Dev on Ubuntu:
sudo apt-get -y install libreadline-gplv2-dev

# Install some nokogiri dependencies:
sudo apt-get -y install libxml2 libxml2-dev libxslt1-dev

# Install Git
sudo apt-get -y install git-core 

# Install Sqlite
sudo apt-get -y install sqlite3 libsqlite3-dev 

# Install Make
sudo apt-get -y install make

# Install NodeJS (Required for Rails)
sudo apt-get -y install python-software-properties
sudo add-apt-repository -y ppa:chris-lea/node.js
sudo apt-get -y update
sudo apt-get -y install curl nodejs

# Install RBENV
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
touch ~/.bash_profile
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

# Install Ruby 2.1.0
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

sudo sh ~/.rbenv/plugins/ruby-build/install.sh
rbenv install 2.1.0
rbenv rehash
rbenv global 2.1.0

# Install gems for Rails
# gem install rdoc
gem install bundler
# gem install rake 
gem install sqlite3 -v '1.3.9'
gem install rails
rbenv rehash

提前谢谢了。

答案1

这对我来说看起来很熟悉。我为 Vagrant 配置编写了一些 shell 脚本,在运行它之前确实遇到了很多问题。

这可能与以下内容有关rbenv,请检查以下内容

  1. 您不需要 sudo 来通过 rbenv + ruby​​-build 安装 Ruby(看到您是否收到权限错误?)
  2. 通过 rben 安装 Ruby 的正确方法是 ->rbenv install 2.1.2 -v
  3. 通过 rbenv 安装 ruby​​ 后,你可能必须重新启动 shell(我使用exec $SHELL -l它,它对我的​​脚本很有效)
  4. 对于 ubuntu,你不应该使用$HOME/.bash_profile,根据 rbenv 文档,你应该使用$HOME/.bashrc

修复以上所有内容并查看是否有效。

相关内容