Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在Vagrant脚本中重新加载VM_Bash_Unix_Debian_Vagrant_Locale - Fatal编程技术网

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
,并再次检查