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-8 と ja_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

コメントを残す

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

Your post must include a link to this post.

How does this work?
Write a response on your own website and include a link to this post. Then submit your response’s URL here. Your response may appear here after moderation. To update or remove it, edit or delete your original post and submit the same URL again. Learn more about Webmentions.