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

コメントを残す

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

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)