Vagrantfile. Установить локаль для агента ssh
У меня проблема, описанная здесь
Эта проблема возникает из-за того, что хост-машина ставит локаль в гостевую систему через ssh.
Каков правильный способ решить эту проблему?
Как я могу заставить бродячего ssh сделать это:
LC_ALL=en_US.UTF-8 vagrant ssh
каждый раз?
Ответы
Ответ 1
Я предлагаю переопределить локаль хоста в Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/vivid64"
ENV['LC_ALL']="en_US.UTF-8"
end
Изменение не видно за пределами Vagrant (переменные host env остаются неизменными)
Ответ 2
У меня была такая же проблема для OSX (решение аналогично для Linux) при подключении к моим блокам Vagrant Ubuntu.
Я просто "решил" его, отредактировав /etc/ssh_config
(или /etc/ssh/ssh_config
в Linux) и комментируя следующую строку:
# SendEnv LANG LC_*
Это в основном останавливает ssh
от отправки переменных LANG
и LC_ALL
(all LC_
) на удаленный хост, в результате чего используется значение по умолчанию. В этом случае en_US.UTF-8
.
Очевидно, это приведет к тому, что ваши удаленные подключения всегда будут использовать локаль по умолчанию, которая может быть не такой, какой вы хотите.
Я считаю, что вы также можете установить предпочтения ssh на хост, но так и не сделали. Я вас заинтересован в этом, возможно, стоит посмотреть.
Ответ 3
Мой ответ: я просто добавляю строку в мою сборник пьес. Но это не ответ с точки зрения только Vagrant
- name: set locale
lineinfile: dest=/etc/default/locale line="LC_ALL=C"
Ответ 4
LC_ALL=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
добавьте эти строки в ~/.bash_profile из VM и перезапустите VM через vagrant
Ответ 5
Правильный способ - настроить демон ssh на виртуальной машине, чтобы не принимать эти переменные среды.
Измените в своей среде разработки файл /etc/ssh/sshd_config
и прокомментируйте строку AcceptEnv
следующим образом:
$ cat /etc/ssh/sshd_config | grep AcceptEnv
# AcceptEnv LANG LC_*
Если вы используете Docker в качестве провайдера, вы можете поместить в свой файл Docker:
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