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