Как автоматизировать 'dpkg-переконфигурировать локали' с помощью одной команды?

В консоли для ввода dpkg-reconfigure locales выскочить, я выбираю en_HK.UTF-8 как моя цель, нажмите Enter.

dpkg-reconfigure locales
Generating locales (this might take a while)...
en_HK.UTF-8... done

Как автоматизировать весь процесс в одну команду?

7 ответов

Решение

Одна команда:

sudo update-locale LANG = en_HK.UTF-8

Легкий день :)

То, что сработало для меня, было сочетанием ответов @DevRobot и @Gunnar Hjalmarsson (от имени root). РЕДАКТИРОВАТЬ: Добавлены некоторые улучшения, чтобы избежать раздражающих ошибок:

update-locale "LANG=en_HK.UTF-8"
locale-gen --purge "en_HK.UTF-8"
dpkg-reconfigure --frontend noninteractive locales

Другая возможность (которая работает еще лучше) через debconf-utils коммунальные услуги и debconf-set-selections (запустить от имени root):

echo "locales locales/default_environment_locale select en_HK.UTF-8" | debconf-set-selections
echo "locales locales/locales_to_be_generated multiselect en_HK.UTF-8 UTF-8" | debconf-set-selections
rm "/etc/locale.gen"
dpkg-reconfigure --frontend noninteractive locales

Надеюсь, это поможет.

Я бы посоветовал:

echo "en_HK.UTF-8" | sudo tee -a /etc/locale.gen
sudo locale-gen

или если это обязательно должна быть "одна команда":

echo "en_HK.UTF-8" | sudo tee -a /etc/locale.gen; sudo locale-gen

Для объяснения см. Мой ответ на /questions/383825/locale-gen-ne-rabotaet/844328#844328.

Если вы хотите сгенерировать одну локаль, этого теоретически должно быть достаточно:

      echo "locales locales/locales_to_be_generated multiselect en_HK.UTF-8 UTF-8" | debconf-set-selections
dpkg-reconfigure --frontend noninteractive locales

Однако на практике dpkg-reconfigure не сможет сгенерировать локаль в Ubuntu 20.04. Чтобы обойти это, вам нужна дополнительная команда:

      echo "locales locales/locales_to_be_generated multiselect en_HK.UTF-8 UTF-8" | debconf-set-selections
rm /etc/locale.gen
dpkg-reconfigure --frontend noninteractive locales

Эта суть имела решение для меня:

sudo sed -i '/^#.* en_US.* /s/^#//' /etc/locale.gen
sudo locale-gen

Я бы наверное запустил

sudo locale-gen --purge

Это восстанавливает все локали для ваших установленных языков.

      sudo EDITOR='sed -Ei "
    s|locales/locales_to_be_generated=.+|locales/locales_to_be_generated=\"en_GB.UTF-8 UTF-8\"|; 
    s|locales/default_environment_locale=.+|locales/default_environment_locale=\"en_GB.UTF-8\"|
    "' dpkg-reconfigure -f editor locales

Связанный ответ: Как установить локаль неинтерактивно в Debian/Ubuntu?

Другие вопросы по тегам