Изменение настроек локали Ubuntu с помощью графического интерфейса приводит к сбою демона accounts

1332
gabriel_agm

Я использую Ubuntu 12.04, и после автоматического обновления он изменил системную стандартную форму кодировки UTF-8 на «ANSI_X3.4-1968». Я понял, что когда мои комментарии к коду в Eclipse появились со странными символами, и после того, как я понял, что IDE невиновен, я открыл терминал для проверки. Когда я набираю латинские символы в окне терминала, например, çãõéèê ..., вместо этого отображается знак вопроса. То же самое, я 'кошка' текстовый файл. Изменение настроек локали Ubuntu с помощью графического интерфейса приводит к сбою демона account:

ExecutablePath: /usr/bin/gnome-language-selector ProcCmdline: /usr/bin/python /usr/bin/gnome-language-selector ... File "/usr/lib/python2.7/dist-packages/dbus/connection.py", line 651, in call_blocking message, timeout) DBusException: org.freedesktop.Accounts.Error.Failed: running '/usr/share/language-tools/save-to-pam-env' failed: no output 

Затем я изменил команду save-to-pam-env, добавив строку отладки, и выполнил селектор lang в терминале:

gag@desktop~> /usr/bin/python /usr/bin/gnome-language-selector (gnome-language-selector:17733): Gtk-WARNING **: Locale not supported by C library. Using the fallback 'C' 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_COLLATE to default locale: No such file or directory perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "pt_BR" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). ...same message a dozen times... locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_COLLATE to default locale: No such file or directory /usr/lib/python2.7/dist-packages/LanguageSelector/gtk/GtkLanguageSelector.py:858: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal self._localeinfo.translate(loc, native=True) == defaultLangName): //the line below is my debug 'print' exec: /usr/share/language-tools/save-to-pam-env /home/likewise-open/CERTI/gag pt_BR.UTF-8  

Итак, запустим эту команду вручную:

gag@desktop~> /usr/share/language-tools/save-to-pam-env /home/likewise-open/CERTI/gag pt_BR.UTF-8 pt_BR.UTF-8 gag@ccd-7840~> locale LANG= LANGUAGE= LC_CTYPE="POSIX" LC_NUMERIC="POSIX" LC_TIME="POSIX" LC_COLLATE="POSIX" LC_MONETARY="POSIX" LC_MESSAGES="POSIX" LC_PAPER="POSIX" LC_NAME="POSIX" LC_ADDRESS="POSIX" LC_TELEPHONE="POSIX" LC_MEASUREMENT="POSIX" LC_IDENTIFICATION="POSIX" LC_ALL= gag@desktop~> cat .pam_environment  LANGUAGE=en LANG=en_US.UTF-8 LC_NUMERIC=pt_BR.UTF-8 LC_TIME=pt_BR.UTF-8 LC_MONETARY=pt_BR.UTF-8 LC_PAPER=pt_BR.UTF-8 LC_NAME=pt_BR.UTF-8 LC_ADDRESS=pt_BR.UTF-8 LC_TELEPHONE=pt_BR.UTF-8 LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=pt_BR.UTF-8 

Все это выглядит нормально, но перезагрузка компьютера и вход в систему не меняются. По CLI я вижу, что локали правильно установлены:

gag@desktop~> locale -a | grep pt pt_BR.utf8 pt_PT.utf8 gag@desktop~> locale -m | grep UTF UTF-8 

Я также попробовал:

sudo apt-get install language-pack-pt language-pack-pt-base sudo apt-get install --reinstall locales 

Без эффекта. Когда я захожу с другой учетной записи, кодировка в порядке. Идеи?

1

1 ответ на вопрос

0
gabriel_agm

It turns out that my "~/.pam_environment" config is not being read at all. I've than made a workaround by setting these in my ~/.profile file:

export LC_COLLATE="C" export LANG="en_US.UTF-8" export LC_ALL="pt_BR.UTF-8" 

Though using LC_ALL is not recommended in the "locale" man entry.

The only cause I could find googli'n arount for .pam_environment being ignored is home dir. encription usyng ecryptfs - and that's not my case.

Anyway, its working, so let it be.