Файл Vagrantfile. Установить языковой стандарт для агента ssh
У меня есть проблема, описанная здесь
эта проблема возникает, потому что хост-машина помещает локаль гостю через ssh.
каков правильный способ решить эту проблему?
Как я могу заставить vagrant ssh сделать это:
LC_ALL=en_US.UTF-8 vagrant ssh
каждый раз?
5 ответов
Я предлагаю переопределить локаль хоста в Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/vivid64"
ENV['LC_ALL']="en_US.UTF-8"
end
изменение не видно вне Vagrant (переменные host env остаются неизменными)
у меня была такая же проблема на OSX (решение аналогично для Linux) при подключении к моим коробкам Ubuntu Vagrant.
Я просто "решил" его, отредактировав /etc/ssh_config
(или /etc/ssh/ssh_config
в Linux) и комментируем следующую строку:
# SendEnv LANG LC_*
это в основном останавливается ssh
отправить LANG
и LC_ALL
(всего LC_
переменные) на удаленный хост, в результате чего используется значение по умолчанию в поле. В этом случае en_US.UTF-8
.
очевидно, это приведет к удаленному подключения всегда использовать языковой стандарт по умолчанию, который может быть не то, что вы хотите.
Я считаю, что вы также можете установить настройки ssh на хост, но никогда этого не делали. Я вас заинтересовал в этом, может быть, стоит посмотреть.
мой ответ: я просто добавляю строку в свой ansible playbook. Но это не ответ в терминах только Vagrant
- name: set locale
lineinfile: dest=/etc/default/locale line="LC_ALL=C"
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
добавить следующие строки в файл ~/.bash_profile VM и перезапустить VM через vagrant
правильным способом является настройка демона ssh в виртуальной машине, чтобы не принимать эти переменные среды.
измените в своей среде разработки файл /etc/ssh/sshd_config
и комментарий AcceptEnv
строку:
$ cat /etc/ssh/sshd_config | grep AcceptEnv
# AcceptEnv LANG LC_*
если вы используете Docker в качестве поставщика, вы можете поместить в свой Dockerfile:
sed -i 's/AcceptEnv/# AcceptEnv/' /etc/ssh/sshd_config
вам также необходимо создать и установить локаль по умолчанию. Вы можете сделать это с:
# Set the locale
ENV LANG en_US.UTF-8
RUN locale-gen en_US.UTF-8 && update-locale LANG=en_US.UTF-8