Bash 在Vagrant脚本中重新加载VM
简介Bash 在Vagrant脚本中重新加载VM,bash,unix,debian,vagrant,locale,Bash,Unix,Debian,Vagrant,Locale,简介 我正在使用Vagrant,希望创建一个适合我需要的盒子。我目前正在构建配置脚本,但我有一个问题,需要我重新登录到该框中 我正在努力实现的目标 我想将我的地区设置为德语 我在做什么 使用vagrant ssh登录到我的vagrant框后,我正在运行以下命令 sudo apt-get update sudo cp /var/www/projectfantasy/www/vagrant_ressources/locale.gen /etc/ sudo locale-gen de_DE.UTF-
我正在使用Vagrant,希望创建一个适合我需要的盒子。我目前正在构建配置脚本,但我有一个问题,需要我重新登录到该框中 我正在努力实现的目标
我想将我的地区设置为德语 我在做什么
使用
vagrant ssh
登录到我的vagrant框后,我正在运行以下命令
sudo apt-get update
sudo cp /var/www/projectfantasy/www/vagrant_ressources/locale.gen /etc/
sudo locale-gen de_DE.UTF-8
这些步骤是在的帮助下完成的。最后一步是
要在程序中使用新设置,请注销并重新登录
现在我需要帮助。在流浪者配置脚本中,我将如何重新记录?当我不重新登录时,在安装额外软件包时会收到以下警告
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
我的意思是,这些只是警告,所以这不应该是个问题,对吗?但我不想收到警告,我想知道如何解决这个问题
当我重新登录并尝试再次安装这些软件包时,它不会出现任何问题。不幸的是,这并不是那么简单-如果在设置脚本中发出
重新启动命令或立即关机-r
,虚拟机将重新启动(实际上),但设置将不会继续
幸运的是,有人编写了插件,我也体验过第二个插件,它可以正常工作
确保安装插件
$ vagrant plugin install vagrant-reload
在您的文件中,您的设置如下所示
config.vm.provision "shell", path: "vagrant_ressources/preparations.sh"
config.vm.provision :reload
config.vm.provision "shell", path: "vagrant_ressources/bootstrap.sh"
因此preparences.sh将执行,然后VM将重新加载,bootstrap.sh将执行
在preparentation.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:关于您使用shell资源调配的一个注意事项。默认情况下,配置以root权限运行,因此不需要所有的sudo
;如果您想以vagrant用户的身份运行配置,请以config.vm.provision:shell,privileged:false…
的身份运行配置,然后您将需要sudo我无法重现您的警告,但我发现这将允许您设置LC\U ALL:
sudo update-locale LC_ALL=de_DE.UTF-8
(来自debian jessie,但也为debian jessie工作)您是否已经尝试开始新的bash会话/bin/bash
EDIT:当考虑到它时,怀疑它是否会起作用;)也许可以用手来设定?嗯,我可以试试。今晚我会给你一个回复Hey@dahrens-很遗憾没有工作。键入LANGUAGE=de_de.UTF-8
时,我得到的错误与以前相同,对于LC_ALL=de_de.UTF-8
等变量,我得到的错误消息是:-bash:warning:setlocale:LC_ALL:无法更改区域设置(de_de.UTF-8):没有这样的文件或目录
您可以简单地再次登录到localhost吗ssh localhost
应该提供一个登录shell,您可以cat~/.ssh/*.pub>~/.ssh/authorized_key
使其无密码。(如果这行得通,我会给你一个答案。)嘿!谢谢你的回答。这确实重新启动了我的盒子,但并不能解决我的问题。即使重新启动后,我也会遇到同样的错误。你知道为什么会这样吗?不确定,你能否详细说明下一步的资源调配步骤,以便在获得我的文件之前进行复制:我添加了此脚本使用的所有文件OK难以检查,因为缺少项目文件。。我建议添加/etc/default/locale
嘿。抱歉,我不得不删除我的评论,因为它无法解决问题。我现在添加了你帖子的echo
,并再次检查