stack
を使用してFedoraツールボックス内にhaskellプログラムをビルドすると、ロケールの問題まで追跡できるという奇妙なエラーが発生しました。 less
UTF-8バイトシーケンスを表示しないなどの他の問題がありました。 locale
を実行すると、エラーが表示されました。
$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=
glibc-langpack-fr
パッケージ(私の場合)をインストールすると、問題が解決しました。 これは、ツールボックスを最初に作成するときに実行する必要があります。 または、ドキュメントの一部である可能性があります。
はい、チェコのユーザーからも同様の奇妙な報告があったと聞いていますが、 locale
はen
バリエーション( en_US
だけでなく)でも問題なく機能するようだったので、忘れてしまいました。それ。
glibc-langpack-fr
パッケージがFedoraホストにどのようにインストールされるか知っていますか?
@halflineのおかげで、私はこれをもう少しよく理解しています。
glibc-minimal-langpack
をglibc-all-langpacks
置き換えると、最も差し迫った問題が解決する可能性があります。
# dnf -y swap glibc-minimal-langpack glibc-all-langpacks
完全な修正には、 /etc/rpm/macros.image-language-conf
を削除し、翻訳が欠落しているすべてのパッケージを再インストールすることも含まれると思います。 これには、 tsflags=nodocs
効果を元に戻す#55に似たものが含まれます。
また、実験の検証に使用できる具体的なテストケースがあると便利です。
今のところ、より簡単な修正または回避策は、 LANG=C.utf8
podmanを実行することかもしれません。
それは私が考える現在の問題のほとんどを修正するはずです。
ミニマリストのテストケースはlocale
を実行するだけです:
<strong i="10">@toolbox</strong> ~ $ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
:
これがこの問題のフォローアップであるかどうかはわかりませんが、最近のツールボックスでは、ロケールがホストから保持されなくなりました。 今、私はen_US.UTF-8
ロケールを取得し、ロケールエラーはなく、#14と同じvimの問題が発生します(tmux内で実行されていないことを除く)
現在、ツールボックスはデフォルトでglibc-langpack-en
のみをインストールします。
編集これはfedora:30
画像から継承されていると思います。
最新のfedora:30 (およびfedora:rawhide)では、 glibc-langpack-en
が削除されました。
たとえば、これはhttps://bodhi.fedoraproject.org/updates/FEDORA-CONTAINER-2019-724ac61633に影響し
実際、本当の問題は、 fedora:30 /etc/locale.conf
にLANG="en_US.UTF-8"
です。
上記の変更が意図的なものであると仮定します。
sed -e 's/en_US/C' /etc/locale.conf
回避できます。
わかりました、 https://bugzilla.redhat.com/show_bug.cgi?id = 1727489でカバーされているようです
glibc-langpack-en
またはglibc-alll-langpacks
をインストールすると、この問題が修正されることを確認できます。 後の重量はコンテナの重量の半分である約200mbであることを覚えておいてください。
ホストで$ toolbox run locale
すると、次のようになります。
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
(...)
コンテナ化されたシェルセッション内で$ locale
実行している場合はそうではありませんが、ホストのロケールが固有のようです。
$ toolbox enter
⬢$ locale
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
(...)
それが別の問題であるかどうかはわかりませんが、 glibc-langpack-en
またはglibc-all-langpacks
インストールすると修正されます。 私はFedora31Silverblueを使用しています。
最も参考になるコメント
ホストで
$ toolbox run locale
すると、次のようになります。コンテナ化されたシェルセッション内で
$ locale
実行している場合はそうではありませんが、ホストのロケールが固有のようです。それが別の問題であるかどうかはわかりませんが、
glibc-langpack-en
またはglibc-all-langpacks
インストールすると修正されます。 私はFedora31Silverblueを使用しています。