Toolbox: ロケールの問題、glibc-langpack- *パッケージをインストールする必要があります

作成日 2019年02月23日  ·  10コメント  ·  ソース: containers/toolbox

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パッケージ(私の場合)をインストールすると、問題が解決しました。 これは、ツールボックスを最初に作成するときに実行する必要があります。 または、ドキュメントの一部である可能性があります。

1. Bug 5. Good First Issue 5. Help Wanted

最も参考になるコメント

ホストで$ 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を使用しています。

全てのコメント10件

はい、チェコのユーザーからも同様の奇妙な報告があったと聞いていますが、 localeenバリエーション( en_USだけでなく)でも問題なく機能するようだったので、忘れてしまいました。それ。

glibc-langpack-frパッケージがFedoraホストにどのようにインストールされるか知っていますか?

@halflineのおかげで、私はこれをもう少しよく理解しています。

glibc-minimal-langpackglibc-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.confLANG="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を使用しています。

このページは役に立ちましたか?
0 / 5 - 0 評価