Permissão ao executar o script no Vagrant usando o Vagrantfile

1

Eu criei uma caixa vagrant para executar aplicativos rails e consegui criá-lo manualmente.

Meu próximo passo foi criar um script de shell que eu possa incluir no Vagrantfile, então, ao criar novas caixas, toda a instalação será feita automaticamente.

Mas quando eu alcanço a linha:

source ~/.bash_profile 

Eu recebo este erro

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

Funciona bem no CLI

Alguma idéia?

UPDATE

Corrigi o erro mkdir e o script é executado de ponta a ponta, sem erros aparentes.

Agora, quando eu vagrant ssh e verifiquei meu diretório home, não encontrei nenhum dos git repos que eu baixei e instalei usando meu script nem .bash_profile, portanto não posso rbenv

Alguma idéia de por que isso pode acontecer - o que estou fazendo de errado?

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

isto é 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

Muito obrigado antecipadamente.

    
por Altons 22.05.2014 / 18:06

1 resposta

0

Isso parece familiar para mim. Escrevi alguns scripts de shell para o provisionamento do Vagrant e acertei vários problemas antes de executá-lo.

Isso pode estar relacionado a rbenv , verifique o seguinte

  1. Você não precisa do sudo para instalar o Ruby via rbenv + ruby-build (você consegue um erro de permissão?)
  2. A maneira correta de instalar o Ruby via rben é - > %código%
  3. Depois de instalar o ruby via rbenv, você pode ter que reiniciar o shell (usei rbenv install 2.1.2 -v , que funcionou bem para o meu script)
  4. Para o Ubuntu, você NÃO deve usar exec $SHELL -l , de acordo com documentos do rbenv, você deve usar $HOME/.bash_profile

Corrija tudo acima e veja se funciona.

    
por Terry Wang 17.06.2014 / 06:37