2016-04-15 3 views
2

Введение
Я использую Vagrant и хочу создать коробку, которая соответствует моим потребностям. В настоящее время я создаю сценарий подготовки, но у меня есть проблема, которая потребует от меня переустановки в поле.Reload VM in Vagrant script

То, что я пытаюсь достичь
Я хочу, чтобы установить свои локали на немецком языке

Что я делаю
После входа в мой бродяга ящик с vagrant ssh Я бегу следующие команды

sudo apt-get update 
sudo cp /var/www/projectfantasy/www/vagrant_ressources/locale.gen /etc/ 
sudo locale-gen de_DE.UTF-8 

Эти шаги выполняются с помощью Debian's wiki. Последний шаг

Чтобы использовать новые настройки с вашими программами, выйдите из системы и обратно.

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

perl: warning: Setting locale failed. 
perl: warning: Please check that your locale settings: 
    LANGUAGE = (unset), 
    LC_ALL = (unset), 
    LC_CTYPE = "de_DE.UTF-8", 
    LANG = "en_US.UTF-8" 
    are supported and installed on your system. 
perl: warning: Falling back to the standard locale ("C"). 
locale: Cannot set LC_MESSAGES to default locale: No such file or directory 
locale: Cannot set LC_ALL to default locale: No such file or directory 

Я имею в виду, это только предупреждения, так что это не должно быть проблемой, не так ли? Но я не хочу иметь предупреждения и хотел бы знать, как я могу исправить эту проблему.

Когда я переустанавливаю и пытаюсь установить эти пакеты снова, он работает без проблем.

+0

Вы уже пытались начать новую сессию bash? '/ bin/bash' EDIT: если вы думаете об этом, то сомневаетесь, что это сработает;) – dahrens

+0

возможно, установив [переменную среды] (https://help.ubuntu.com/community/EnvironmentVariables) вручную? – dahrens

+0

Хм, я мог бы попробовать это. Я дам вам ответ сегодня вечером – Musterknabe

ответ

2

К сожалению, это не так просто - если вы выдаете команду reboot или shutdown -r now в вашем сценарии инициализации, виртуальная машина перезагрузится (действительно), но затем инициализация не продолжится.

к счастью, некоторые люди писали плагин (https://github.com/exratione/vagrant-provision-reboot и https://github.com/aidanns/vagrant-reload) я испытал с второй, и она работает

убедитесь, что установить плагин

$ vagrant plugin install vagrant-reload 

в вашем vagrantfile, ваше резервирование будет выглядеть

config.vm.provision "shell", path: "vagrant_ressources/preparations.sh" 
config.vm.provision :reload 
config.vm.provision "shell", path: "vagrant_ressources/bootstrap.sh" 

поэтому подготовка.sh будет выполнена, затем VM перезагрузится и bootstrap.sh выполнит

в вашем preparations.sh, после генерации локали, убедитесь, что переменные установлены в файле локали:

sudo locale-gen 
echo -e 'LANG=de_DE.UTF-8\nLC_ALL=de_DE.UTF-8' > /etc/default/locale 
sudo timedatectl set-timezone Europe/Berlin 

PS: одно примечание на использовании вами резервирования оболочки.По умолчанию инициализация выполняется с правами root, поэтому нет необходимости в всех sudo; если вы хотите, чтобы запустить инициализацию как бродячего пользователя запустить его как config.vm.provision :shell, privileged: false ... и вы будете нуждаться в Sudo

+0

Эй! Спасибо за ответ. Это действительно перезапустит мой ящик, однако не исправляет мои проблемы. Даже после перезапуска я получаю те же ошибки. Вы знаете, почему это может быть? – Musterknabe

+0

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

+0

Здесь вы получили мои файлы: https://gist.github.com/tzfrs/373e8c80de123f099265ef536484aeae Я добавил все файлы, которые используются этим script – Musterknabe

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