Удалить локаль в Ubuntu
Я случайно добавил локаль, например, sudo locale-gen zh_TW
например, язык -a
zh_TW
Но как это убрать?
5 ответов
Я думаю, что вы можете сделать это путем редактирования /var/lib/locales/supported.d/local
и удаление этой локали. Тогда беги locale-gen
восстановить скомпилированные локали.
Вы также можете перенастроить пакет locales, используя dpkg-reconfigure locales
,
Какие локали установлены на моей машине?
Вы можете проверить, какие локали генерируются и настраиваются в вашей системе, используя команду locale:
locale
... перечислить текущую конфигурацию локалиlocale -a
... перечисляет все локали, которые были созданы в вашей системеlocale -a -v
... перечислить все локали и показать полезную дополнительную информацию (например, имена каталогов, которые содержат файлы данных с информацией о локалях)
Последняя команда сверху показывает, что все сгенерированные локали находятся в /usr/lib/locale/
, и вы можете удалить любой из них, если в этом нет необходимости. Каждый пакет информации о локали представляет собой каталог, содержащий текстовые файлы и другие каталоги.
-
Поддерживаемые локали
Все локали, которые вы хотите, чтобы ваша система поддерживала, перечислены в текстовых файлах в /var/lib/locales/supported.d/
, Эти файлы имеют два столбца, языковой тег и карту символов.
Я хочу, чтобы моя система знала только американский английский, поэтому у меня есть только один файл, который называется en
, который содержит только одну строку:
en_US UTF-8
-
Сообщения об ошибках
Если при выдаче команды локали отображаются сообщения об ошибках, например
locale: Cannot set LC_ALL to default locale: No such file or directory
убедитесь, что файл /etc/default/locale
существует и имеет надлежащий контент, такой как:
LANG="en_US"
LANGUAGE="en_US:en"
-
Избавьтесь от ненужных языковых данных - шаг за шагом
Теперь мы знаем все необходимые детали, чтобы начать очистку информации о локали нашей системы:
- Отредактируйте файл (ы) локали в
/var/lib/locales/supported.d/
и удалите все ненужные локали (по одной локали на строку) - Создавать и редактировать
/etc/default/locale
(см. пример выше) - Удалить все сгенерированные данные локали:
rm -rfv /usr/lib/locale/*
- Повторно сгенерируйте новые локали:
locale-gen
Это все! Перезагрузите компьютер, чтобы изменения вступили в силу. Затем выполните один или несколько приведенных выше примеров команды locale, чтобы убедиться, что результат соответствует ожидаемому.
-
Ссылка:
Примечание: для некоторых из приведенных ниже команд требуются привилегии root, рассмотрите возможность использования
sudo
.
Базовая информация
В соответствии с man locale-gen
, локали задаются в нескольких файлах.
/etc/locale.gen
Основной файл конфигурации, имеющий простой формат: каждая строка, которая не пуста и не начинается с символа #, рассматривается как определение локали, которое необходимо создать.
/var/lib/locales/supported.d/
Каталог, содержащий фрагменты кода locale.gen, предоставляемые пакетами языковых пакетов. Не редактируйте их вручную, они будут перезаписаны при обновлении пакета.
Подробные сведения о местах на Arch Wiki.
Проверка локалей и локали
Чтобы проверить (уже) сгенерированные языковые стандарты, выполните любую из следующих команд (с небольшими отличиями в выводе).
locale -a
localedef --list-archive
localectl list-locales
Чтобы проверить текущий языковой стандарт, выполните любую из следующих команд (с небольшими отличиями в выводе).
locale
localectl
Установка и создание (новых) локалей
Локали обычно устанавливаются раскомментированием строк в
/etc/locale.gen
, после чего запускается
locale-gen
требуется для.
nano /etc/locale.gen # uncomment desired lines (locales)
locale-gen
Это создаст файлы локалей для каждой строки без комментариев в
/etc/locale.gen
(и под
/var/lib/locales/supported.d/
), независимо от того, были ли они созданы ранее или нет.
В качестве альтернативы команда
locale-gen <locale>
раскомментирует соответствующую строку в
locale-gen
при создании желаемого языкового стандарта и только этого.
Удаление локалей
Чтобы удалить локали в
/etc/locale.gen
, просто закомментируйте нужные строки и заново создайте языковые стандарты, используя
locale-gen
. Команда
locale-gen --purge <locale>
не делает то, что предлагает модификатор.
Чтобы удалить локали под
/var/lib/locales/supported.d/
сложнее. Поскольку любой файл
/var/lib/locales/supported.d/<code>
зависит от пакета
language-pack-<code>-base
, любые изменения в первом будут восстановлены при обновлении последнего.
Обходной путь. Чтобы предотвратить изменения под
/var/lib/locales/supported.d/
, установите в нем файлы с атрибутом "immutable (i)". Поэтому вместо удаления файлов очистите их. Например:
cd /var/lib/locales/supported.d/
rm <code> && touch <code> # <code> has been emptied
lsattr <code> # regular attributes
chattr +i <code> # adding (+) immutable
lsattr <code> # checking attributes
Установка языкового стандарта
Установка и создание языковых стандартов не устанавливает языковой стандарт системы. Этого можно добиться с помощью любой из следующих команд.
echo LANG=<code> | sudo tee /etc/locale.conf # reboot (might be ignored in Ubuntu)
localectl set-locale LANG=<code>
Я не уверен, почему большинство дистрибутивов и пользователей не знают о localepurge .
Для систем на основе Debian, если он доступен
apt-get install localepurge
Со страницы руководства:
localepurge — это небольшой скрипт для восстановления дискового пространства, потраченного на ненужные файлы локали и локализованные справочные страницы. Он будет автоматически вызван dpkg после завершения любого запуска установки apt.
Вам необходимо определить имена каталогов локали, которые вы хотите предотвратить от удаления, после каждого запуска установки apt в файле конфигурации /etc/locale.nopurge. Если localepurge не настроен должным образом, файлы локализации системы вообще не будут затронуты.
Удаление повлияет на содержимое следующих каталогов:
- /usr/share/doc/kde/HTML
- /usr/share/gnome/help
- /usr/share/locale
- /usr/share/man
- /usr/share/omf
- /usr/share/tcltk
- /usr/share/cups/{templates,locale,doc-root}
- /usr/share/calendar
- /usr/share/aptitude
- /usr/share/help/<domain>/HELP_CONTENT(files&dirs)
- /usr/share/vim/vim*/lang
Файлы локализации, которые вам действительно нужны и которые вы хотите сохранить в своей системе, можно легко настроить, выполнив следующую команду:
dpkg-reconfigure localepurge
Вывод: этот скрипт позаботится о любых нежелательных локалях в данный момент и в будущем.