tlmgr を利用すると常にロケールに関するメッセージが表示される

tlmgr を利用すると常にロケールに関するメッセージが表示される

- ya ra の投稿
返信数: 5

環境

  • Windows11
  • TeX Live 2024

生じる問題

tlmgr を使うと、常に次のロケールに関するメッセージが表示されます。

Locale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.

例えば、tlmgr のバージョンを表示させると次のようになります。

> tlmgr --version
Locale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.
tlmgr revision 70080 (2024-02-23 00:13:07 +0100)
tlmgr using installation: D:/texlive/2024
TeX Live (https://tug.org/texlive) version 2024

このメッセージが表示されていても infoinstall の結果を得られるため実害はありませんが、出来れば表示されないことを期待しています。 このメッセージを表示させないようにする方法はあるでしょうか。

ya ra への返信

Re: tlmgr を利用すると常にロケールに関するメッセージが表示される

- 奥村 晴彦 の投稿

Windowsはふだん使ってないのでよくわからないのですが chcp 65001 すればいいのでしょうか?

奥村 晴彦 への返信

Re: tlmgr を利用すると常にロケールに関するメッセージが表示される

- 和田 勇 の投稿
chcp 65001 であらかた解決はするとはおもいますが、影響範囲がおおきいので
texlive が最新の perl (*1) (*2) を取り込んだ影響との想定で調査中です。

(*1) This is perl 5, version 38, subversion X (v5.38.X)
(*2) Locale が東アジアの場合はこの警告がほぼほぼでるらしい
https://perldoc.jp/docs/perl/5.38.0/perldiag.pod#Locale32-37s32is32unsupported44-32and32may32crash32the32interpreter.
   unsupported, and may crash the interpreter. で検索

現時点での目論見は以下の通り。
tlmgr.batから取り込まれる texmf-dist\scripts\texlive\tlmgr.pl で対処しようかなとかんがえています。
当然そのほかの perl を使うスクリプトも同様の対処が必要かとは考えています。
和田 勇 への返信

Re: tlmgr を利用すると常にロケールに関するメッセージが表示される

- 和田 勇 の投稿

Table of Contents

  1. 現象と実験
  2. 暫定対策
  3. perl での原因

現象と実験

  • 警告メッセージの発生タイミング

    • tlmgr.bat スクリプト内から C:\texlive\\2024\tlpkg\tlperl\bin\perl.exe を呼び出したときにいくつ かのシステムロケールの場合に発せられる

      • 直接 texlive 同梱の perl を起動してみる

        PS C:\Users\USER-NAME> C:\texlive\2024\tlpkg\tlperl\bin\perl.exe -v
        Locale 'Japanese_Japan.932' is unsupported, and may crash the interpreter.
        
        This is perl 5, version 38, subversion 2 (v5.38.2) built for MSWin32-x64-multi-thread
        ...
        
  • インターネット検索情報

  • powershell での対処方法

    PS C:\Users\USER-NAME> $Env:LC_ALL = "C"
    PS C:\Users\USER-NAME> $Env:LANG   = "C"
    
  • cmd プロンプト での対処方法

    C:\Users\USER-NAME> set LC_ALL="C"
    C:\Users\USER-NAME> set LANG=C"
    
  • 環境変数 LC_ALL LANG の設定後、同梱 perl を起動してみる

    PS C:\Users\USER-NAME> C:\texlive\2024\tlpkg\tlperl\bin\perl.exe -v
    
    This is perl 5, version 38, subversion 2 (v5.38.2) built for MSWin32-x64-multi-thread
    ...
    

暫定対策

  • LC_ALL LANG は通常設定されていない
  • とはいえユーザの環境変数に追加などすると別の問題を誘発しかねない
  • tlmgr.bat を利用し上記の環境変数 LC_ALL LANG の対策を施した my-tlmgr.bat を添付します
    • 引数を取り込むためオリジナルの tlmgr.bat をかなり利用してます

perl での原因

和田 勇 への返信

Re: tlmgr を利用すると常にロケールに関するメッセージが表示される

- ya ra の投稿

奥村様、和田様。 返信が遅くなって申し訳ありません。

さまざまな検証と対応方法を教えていただきありがとうございます。

ご提示いただいた my-tlmgr.bat を利用すれば期待していた通りにロケールに関するメッセージは表示されないようになりました。ありがとうございます。


原因を思えば、Perl に依存した問題であるならば、TeX Live で利用される Perl のバージョンが更新されれば解消される問題であると理解して良いのでしょうか。

ya ra への返信

Re: tlmgr を利用すると常にロケールに関するメッセージが表示される

- 和田 勇 の投稿
> perl(5.38.x) に依存した問題
>TeX Live で利用される Perl のバージョンが更新されれば解消

perl 次期バージョン 5.40.x が windows 環境+ cp932 で警告なしで起動できるか次第であり、
その改修された perl を texlive が取り込むか否かは私にはわかりませんので
気長にお待ちください。