Обычно я бегу aptitude -y install locales
то , dpkg-reconfigure locales
чтобы настроить локаль.
Теперь я хочу поместить его в сценарий оболочки, как я могу надежно сделать следующее, автоматически / неинтерактивно?
- Выберите
en_US.UTF-8
и установите его как системное значение по умолчанию - Отключить все остальные локали
- (Необязательно) Проверьте,
/etc/default/locale
содержит ли единственная запись,LANG=en_US.UTF-8
как ожидалось
File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))
...locale-gen --purge en_GB.UTF-8
чистую установку, вы получаете неожиданный вывод: естьGenerating locales (this might take a while)... en_US.UTF-8... done Generation complete.
идеи, как настроить список локалей, как это делается в dpkg-перенастраивать локали неинтерактивно?Не удалось получить ответ выше, чтобы работать. Вместо этого я использую этот метод (для Dockerfiles):
источник
en_GB.UTF-8
настроить язык в CircleCI - это был лучший ответ, который работал. Надеясь, что из-за этого комментария Google может показать это как актуальное, когда люди пытаются найти проблему, которая возникла у меня.Чтобы переконфигурировать часовой пояс и локализацию неинтерактивно, из скрипта, вот что работает для меня (в Debian):
Для настройки часового пояса я сначала создаю '/ etc / localtime' в виде мягкой ссылки на соответствующий файл zoneinfo в каталоге / usr / share / zoneinfo. Затем я запускаю команду dpkg-reconfigure , и все будет на месте. Так, например, чтобы установить часовой пояс «Европа / Брюссель»:
(Обратите внимание, что AREA - это подкаталог в «/ usr / share / info», а ZONE - это файл в подкаталоге AREA).
Для настройки локалей я сначала запускаю сценарий sed , который создаст новую копию файла /etc/locale.gen на основе содержимого файла / usr / share / i18n / SUPPORTED. Каждая строка из входного файла будет скопирована, но она будет превращена в комментарий, если она не является записью языкового стандарта UTF-8 для языка, который я хочу сделать доступным в моей системе (например, английский, голландский, французский, и немецкий)
Затем я устанавливаю язык среды по умолчанию в базе данных debconf, например, на британский английский :
Затем я удаляю существующий файл / etc / default / locale (просто чтобы убедиться, что его старое содержимое не будет мешать моим новым настройкам), и запускаю команду dpkg-reconfigure, чтобы сгенерировать все локали, выбранные сценарием sed и создать новый файл '/ etc / default / locale' с помощью только одной записи, чтобы установить для переменной 'LANG' выбранную локаль среды по умолчанию:
Затем, в зависимости от моих требований, я могу захотеть запустить несколько команд update-locale , чтобы переопределить, например, переменные, которые влияют на форматирование значений, и установить для них другой языковой стандарт (например, ирландский английский ):
(Я мог бы указать все эти параметры при одном вызове команды update-locale , но, очевидно, порядок, в котором записи записываются в файл '/ etc / default / locale', непредсказуем, если я это сделаю. предпочитаю, чтобы они всегда были в одном и том же порядке, поэтому я генерирую их один за другим.)
И, наконец, я могу захотеть запустить команду update-locale в последний раз, чтобы установить переменную LANGUAGE (т. Е. Список языков, на которых я хочу отображать переводимые текстовые сообщения):
Добавьте все это в скрипт bash, и вы можете легко перенастроить настройки локали с помощью простого запуска скрипта, который не потребует дальнейшего взаимодействия с пользователем.
Однако, по моему опыту, новые настройки не будут полностью активированы до тех пор, пока вы дважды не перезагрузите систему (по крайней мере, в Debian Jessie Xfce). После первой перезагрузки менеджер входа в систему примет новые настройки в порядке, но после входа в систему пользовательский сеанс продолжит использовать старые настройки; затем, после второй перезагрузки, ваша пользовательская сессия также примет новые настройки.
источник
На основании хорошей работы в ответе @ EirikW. Специфично для
Dockerfile
:источник
Для меня было необходимо установить дополнительные 3 ENV-Vars:
Однако, спасибо ErikWs за ответ: ( https://serverfault.com/a/689947 )
источник