2016-02-03 4 views
0

Я использую этот vagrantfile:Vagrant положение оболочки, автоматическая установка Linuxbrew с командой

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" 

end 

Поскольку я хочу установить Linuxbrew есть в моей предоставления/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 

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)" 

# or maybe also this: (but nothing anyway): 
# sudo git clone https://github.com/Linuxbrew/linuxbrew.git /home/vagrant/.linuxbrew 

export PATH=$HOME/.linuxbrew/bin:$PATH 

brew doctor 

Но получить ошибки:

==> default: /tmp/vagrant-shell: line 35: brew: command not found 

Как это исправить?

ответ

2

Там будет вопрос, как вы запустите скрипт - как вы запустите с config.vm.provision "shell", path: "provision/setup.sh" бродягой будет работать как root пользователя и поэтому вам не нужно SUDO

однако вы должны реально работать это, как ваш пользователь так что config.vm.provision "shell", path: "provision/setup.sh", privileged: false

также экспорт не будет сохранен для будущих сессий, так что добавьте его в файл .bashrc что-то вроде echo PATH=$HOME/.linuxbrew/bin:$PATH >> .bashrc поэтому окончательный сценарий будет выглядеть

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 

Экспорт необходим, если вы запустите отвар из сценария, но обратите внимание, что квас врач, скорее всего, заканчивается предупреждением и не возвращаются, так что вы могли бы в конечном итоге увидеть бродячую сообщение, как

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. 

и, наконец, для исходной ошибки @BMW получает все добавление кредита yes | к команде будет по умолчанию ввести ключ на вопрос

+0

И если я хочу запускать все как root и просто linuxbrew как «бродячий» нормальный пользователь? –

+0

Честно говоря, я никогда не делал этого, но я думаю, что «su -l vagrant -c» врач-варвар «будет работать; в этом случае также убедитесь, что вы делаете эхо-вещь, чтобы иметь полный путь, иначе она перейдет к корню –

+0

В любом случае, также с 'privileged:" false "' в Vagrantfile Я получаю: '==> по умолчанию: не запускайте это как root! », и это не работает! –

1

Позвольте мне угадать. Добавить yes перед командой рубинового

yes | ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/linuxbrew/go/install)" 
+0

Теперь он говорит: '==> по умолчанию: не запускайте это как root! ==> default:/tmp/vagrant-shell: строка 35: brew: command not found' –

 Смежные вопросы

  • Нет связанных вопросов^_^