mcomix – matoken's meme https://matoken.org/blog Sun, 28 Jul 2024 23:17:30 +0000 ja hourly 1 https://wordpress.org/?v=6.7.2 locale が間違っていて MComix が起動しなかった https://matoken.org/blog/2024/07/29/mcomix-did-not-start-because-locale-was-wrong/ https://matoken.org/blog/2024/07/29/mcomix-did-not-start-because-locale-was-wrong/#respond Sun, 28 Jul 2024 22:06:33 +0000 https://matoken.org/blog/?p=4051

最近新しく端末を購入し,例によって 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
]]>
https://matoken.org/blog/2024/07/29/mcomix-did-not-start-because-locale-was-wrong/feed/ 0
MComixでPDFファイルを閲覧する https://matoken.org/blog/2022/08/10/view-pdf-files-with-mcomix/ https://matoken.org/blog/2022/08/10/view-pdf-files-with-mcomix/#respond Tue, 09 Aug 2022 22:42:07 +0000 http://matoken.org/blog/?p=3759

MComixというコミックビュワーがあります.Comixからのフォークです.画像ファイルやアーカイブファイルの画像を見るのに適していて所謂自炊ファイルを開くのにも便利です.

以下のようにPDFにも対応しているのですが,実際に開こうとするとエラーとなりました.

Reads most common image formats, as well as PDF, ZIP, RAR, 7Z and LHA archives directly.

mcomix pdf error

READMEを確認すると,Dependenciesに以下のようなことが書かれていました.

To read PDF files, MComix can use the tools provided by MuPDF, namely
mutool and mudraw.

PDFの閲覧にはMuPDFのmutoolとmudrawが必要なようです.
Debian ではmupdf-toolsパッケージでmutoolが導入できます.mudrawがありませんが,最近はmutool drawになっているようなのmupdf-toolsパッケージの導入だけでよさそうです.

$ sudo apt install mupdf-tools

mcomixとmupdf-toolsの導入された状態でMComixを起動し,PDFファイルを開くとちゃんと開けるようになりました :)
以下よく使うショートカットです.

f
フルスクリーントルグ
b
ベストフィットモード(画面に合わせて画像をフィット)
w
画面横サイズにフィット
h
画面縦サイズにフィット
d
シングルページ,見開きページトルグ
m
右開き,左開きトルグ

見開きで眺めて文字の小さな部分はシングルページにして横幅にフィットさせて読むという感じで使っています.

Note
ちなみに,RARのアーカイブを開きたい場合は unrara or rar を,7Zipのアーカイブを開きたい場合は 7z を,lhzのアーカイブを開きたい場合は lha の導入が必要なようです.必要なものがある場合は入れておきましょう.
環境
$ dpkg-query -W mupdf-tools mcomix
mcomix  1.2.1mcomix3+git20200206-1
mupdf-tools     1.20.0+ds1-1
$ lsb_release -dr
Description:    Debian GNU/Linux bookworm/sid
Release:        unstable
$ arch
x86_64
]]>
https://matoken.org/blog/2022/08/10/view-pdf-files-with-mcomix/feed/ 0
localeが足りなくてmcomixが起動しなくなっていた https://matoken.org/blog/2019/09/12/mcomix-did-not-start-due-to-lack-of-locale/ https://matoken.org/blog/2019/09/12/mcomix-did-not-start-due-to-lack-of-locale/#respond Thu, 12 Sep 2019 13:57:58 +0000 http://matoken.org/blog/?p=2510

mcomix が起動しなくなりました.こないだのエンバグ?と思ったけど

エラーが違う.

$ mcomix
Traceback (most recent call last):
  File "/usr/bin/mcomix", line 11, in <module>
    load_entry_point('mcomix==1.2.1', 'console_scripts', 'mcomix')()
  File "/usr/lib/python2.7/dist-packages/mcomix/run.py", line 127, in run
    i18n.install_gettext()
  File "/usr/lib/python2.7/dist-packages/mcomix/i18n.py", line 71, in install_gettext
    locale.setlocale(locale.LC_ALL, '')
  File "/usr/lib/python2.7/locale.py", line 581, in setlocale
    return _setlocale(category, locale)
locale.Error: unsupported locale setting

localeぽいので適当に指定してみると起動.

$ LC_ALL=C mcomix

しかし,C だと日本語ファイル名などでエラーとなる.

UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-27: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/mcomix/file_chooser_base_dialog.py", line 215, in _response
    if os.path.isdir(path):
  File "/usr/lib/python2.7/genericpath.py", line 49, in isdir
    st = os.stat(s)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-27: ordinal not in range(128)

en_US.UTF-8 だととりあえず利用できるけど,ja_JP.UTF-8 とかで日本語を指定すると……うまく行かない?

$ export LC_ALL=ja_JP.UTF-8 mcomix
bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)

localeを確認するとインストール時に設定していたつもりの ja_JP.UTF-8 がありません.

$ grep -v ^# /etc/locale.gen |uniq

en_US.UTF-8 UTF-8

/etc/locale.gen を編集して,ja_JP.UTF-8 のコメントを外して locale-gen コマンドで生成したら動くようになりました.

$ sudo git diff HEAD~~ /etc/locale.gen
diff --git a/locale.gen b/locale.gen
index c432a9a..afb6141 100644
--- a/locale.gen
+++ b/locale.gen
@@ -287,7 +287,7 @@ en_US.UTF-8 UTF-8
 # it_IT@euro ISO-8859-15
 # iu_CA UTF-8
 # ja_JP.EUC-JP EUC-JP
-# ja_JP.UTF-8 UTF-8
+ja_JP.UTF-8 UTF-8
 # ka_GE GEORGIAN-PS
 # ka_GE.UTF-8 UTF-8
 # kab_DZ UTF-8
$ sudo locale-gen
Generating locales (this might take a while)...
  en_US.UTF-8... done
  ja_JP.UTF-8... done
Generation complete.
環境
$ dpkg-query -W locales mcomix
locales 2.29-1
mcomix  1.2.1-1.1
$ lsb_release -dr
Description:    Debian GNU/Linux bullseye/sid
Release:        unstable
$ uname -m
x86_64
]]>
https://matoken.org/blog/2019/09/12/mcomix-did-not-start-due-to-lack-of-locale/feed/ 0