locale が間違っていて MComix が起動しなかった

最近新しく端末を購入し,例によって Debian sid を入れてセットアップ中です.
しかし, MComix が起動しません.

端末で試すとこのようなエラー.

$ mcomix
Traceback (most recent call last):
    File "/usr/bin/mcomix", line 8, in <module>
        sys.exit(main())
                 ^^^^^^
      File "/usr/lib/python3/dist-packages/mcomix/__main__.py", line 26, in main
        run()
      File "/usr/lib/python3/dist-packages/mcomix/run.py", line 154, in run
        i18n.install_gettext()
      File "/usr/lib/python3/dist-packages/mcomix/i18n.py", line 82, in install_gettext
        lang = portability.get_default_locale()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3/dist-packages/mcomix/portability.py", line 49, in get_default_locale
        lang, _ = locale.getdefaultlocale(("LANGUAGE", "LC_ALL", "LC_MESSAGES", "LANG"))
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.12/locale.py", line 549, in getdefaultlocale
        return _getdefaultlocale(envvars)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.12/locale.py", line 579, in _getdefaultlocale
        return _parse_localename(localename)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      File "/usr/lib/python3.12/locale.py", line 496, in _parse_localename
        raise ValueError('unknown locale: %s' % localename)
    ValueError: unknown locale: ja_JP-UTF-8
$ env | grep ja_JP-UTF-8
LANGUAGE=ja_JP-UTF-8

locale が ja_JP-UTF-8ja_JP.UTF-8 の Typo らしきものになっており知らない locale だということで起動に失敗しているようです.
$ LANGUAGE=ja_JP.UTF-8 mcomix とすると起動します.

ja_JP-UTF-8 をどこかで間違って設定してしまったのだろうと探すと /etc/locale.conf に見つけました.
これを ja_JP.UTF-8 に修正,再起動することで修正されました.

$ sudo localectl set-locale ja_JP.UTF-8
$ sudo git -C /etc diff locale.conf
diff --git a/locale.conf b/locale.conf
index ee5c432..6345544 100644
--- a/locale.conf
+++ b/locale.conf
@@ -1,2 +1,2 @@
 LANG=ja_JP.UTF-8
-LANGUAGE=ja_JP-UTF-8
+LANGUAGE=ja_JP.UTF-8

/etc/locale.conf は systemd のもののようです.
/etc/locale.conf がシステムワイドの設定, ~/.config/locale.conf がユーザーの設定のようです.

ということでこのように変更しました.

$ localectl set-locale LANG=C
$ cat /etc/locale.conf
LANG=C
$ cat ~/.config/locale.conf
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8


$ systemctl reboot

しかし, ~/.config/locale.conf はうまく反映されなかったので結局いつもの ~/.profile で設定し直しました.

$ locale
LANG=ja_JP.UTF-8
LANGUAGE=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

この環境は,Debian testing の 20240718 スナップショットで導入してすぐに sid にアップグレードしたものです.
loale は ja_JP.UTF-8, en_US.UTF-8, C.UTF-8 をテキストインストーラーから選択, ja_JP.UTF-8 をデフォルトロケールに.インストール後 sid に dist-upgrade して手動設定を下覚えのない環境です.
折を見て再度試してみたいところです.

$ dpkg-query -W locales systemd
locales 2.39-6
systemd 256.4-2
$ lsb_release -dr
Description:    Debian GNU/Linux trixie/sid
Release:        n/a
$ arch
x86_64

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です