Файл 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