У меня возникла проблема, когда некоторые категории локали были не заданы:
# locale locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory
побороть данную ошибку можно с помощью тулзы localedef, которая считывает указанные файлы charmap и input, компилирует их в форму, используемую функциями locale(7) в библиотеке C, и помещает их в шесть файлов вывода в каталоге outputpath, давайте попробуем:
localedef -i en_US -f UTF-8 en_US.UTF-8
проверяем:
locale -a C C.UTF-8 en_US.utf8 POSIX ru_RU.utf8
Все должно быть хорошо (но если нет - попробуй поменять локаль вручную), но что же сделала команда localdef:
-i en_US - устанавливаем язык_территория. По мануалу -i inputfile, --inputfile=inputfile указывает на файл определений локали для компиляции. Если inputfile не является абсолютным, то localedef будет искать файлы определения локали в каталоге, определенном переменной окружения I18NPATH и в каталоге по умолчанию.
-f UTF-8 - устанавливаем кодировку символов. По мануалу -f charmapfile, --charmap=charmapfile указывает файл, в котором содержится таблица преобразований символов, используемая файлом ввода. Если файл находится в каталоге по умолчанию для таблиц преобразований символов, то можно не указывать его полное имя.
Каталог по умолчанию можно посмотреть командой localedef --help.
# localedef --help
Usage: localedef [OPTION...] NAME
...System's directory for character maps : /usr/share/i18n/charmaps
repertoire maps: /usr/share/i18n/repertoiremaps
locale path : /usr/lib/locale:/usr/share/i18n
В моем случае выходит, что файлы хранятся тут:
/usr/share/i18n/locales - каталог в котором хранятся доступные язык_территория
/usr/share/i18n/charmaps - каталог, в котором хранятся кодировки символов
Удачки.
p.s. никакой запуск dpkg-reconfigure locales мне не помог.
Источник: 1
Комментарии