Почему почти каждая программа жалуется на мою локаль?

Работы комплекта ISC, если немного сложный для установки. Никакой GUI все же. dnsmasq сервер также работает хорошо на меньшие установки с другим авторитетным сервером имен. Это - один двоичный файл, таким образом, автоматические записи имени легки.

29
15.07.2012, 16:13
5 ответов

Вы пропускаете файл, который использовался бы для установки по умолчанию локали в отсутствие $LANG или $LC_ALL (или все более определенные $LC_whatever) быть установленным.

На более старом glibc это/usr/lib/locale/locale-archive. Поскольку GNU/Linux хаотичен, необходимо использовать strace для определения, какие файлы ожидаются в конкретных версиях, используемых на машине:

strace -e file locale
execve("/usr/bin/locale", ["locale"], [/* 36 vars */]) = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/lib/libc.so.6", O_RDONLY)        = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3

----------------------Комментарии добавили 1 день спустя:

"ltrace-S" должен быть хорошо, так как он показывает syscalls.

Иначе "ltrace" не очень полезен (т.е. это контрпродуктивно по сравнению с strace), потому что это только показывает верхние вызовы. Это очевидно (setlocale (3)), тогда как настоящая проблема происходит в libc.

Это кажется, что у Вас есть необработанные установленные данные локали, с тех пор en_US.UTF-8 работы.

Если так, затем что-то вроде этого должно решить Вашу проблему, установив значение по умолчанию в масштабе всей системы:

localedef -f UTF-8 -i en_US en_US.UTF-8
18
27.01.2020, 19:38

У меня была та же проблема после установки /etc/locale.conf как раз сегодня (касающийся недавних изменений в /etc/rc.conf. В моем случае оказалось, что локали не были установлены.

Проверить /etc/locale.gen. Все локали, которые Ваша ссылка переменных среды должна быть активирована (т.е. не прокомментирована), там. Внеся Ваши изменения, выполненные sudo locale-gen устанавливать выбранные локали.

6
27.01.2020, 19:38

У меня недавно были подобные проблемы, все unicode имена файлов были неправильно отображены, когда я случайно удалил 'LOCALE=en_US.utf8' в /etc/rc.conf. Таким образом, я проверил сценарий начальной загрузки:

if [[ $DAEMON_LOCALE != [nN][oO] ]]; then
    export LANG=${LOCALE:-C}
    if [[ -r /etc/locale.conf ]]; then
        parse_envfile /etc/locale.conf "${localevars[@]}"
    fi
else
    export LANG=C
fi

Простое решение является проверкой оба DAEMON_LOCALE и LOCALE в /etc/rc.conf, удостоверьтесь, что первый не был no и второй не был пуст.

1
27.01.2020, 19:38

Возможно, одна из Ваших настроек недопустима? Это мои настройки локали для ссылки; они не вызывают ошибок (KUbuntu 12.04):

LANG=en_AU.UTF-8
LANGUAGE=
LC_CTYPE="en_AU.UTF-8"
LC_NUMERIC="en_AU.UTF-8"
LC_TIME="en_AU.UTF-8"
LC_COLLATE="en_AU.UTF-8"
LC_MONETARY="en_AU.UTF-8"
LC_MESSAGES="en_AU.UTF-8"
LC_PAPER="en_AU.UTF-8"
LC_NAME="en_AU.UTF-8"
LC_ADDRESS="en_AU.UTF-8"
LC_TELEPHONE="en_AU.UTF-8"
LC_MEASUREMENT="en_AU.UTF-8"
LC_IDENTIFICATION="en_AU.UTF-8"
LC_ALL=
-1
27.01.2020, 19:38

Переход по этой ссылке решает мою проблему:

sudo localectl set-locale LANG=en_CA.UTF-8
# or change to en_US.UTF-8 depends on your locale-gen

он генерирует файл /etc/locale.conf , который устраняет эту проблему

{{1} }
2
27.01.2020, 19:38

Теги

Похожие вопросы