en_US.UTF-8 ロケールを生成できません。

en_US.UTF-8 ロケールを生成できません。

ロケールを設定しようとしましたが、en_US.UTF-8成功しませんでした。インターネットの他の回答によると、まず次のようにロケールを生成する必要があります。

sudo locale-gen en_US.UTF-8

それでは適用してください

sudo dpkg-reconfigure locales

しかし、locale-gen実行すると奇妙なことが発生します。

user@Host /home/user $ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
Generation complete.

ご覧のとおり、実際にはUTF-8を生成しませんが、引き続きISO-8859-1に戻ります。LC_ALLに設定できませんen_US.UTF-8。おそらくビルドされていないからです。

私は何が間違っていましたか?私はDebian 8.1を使用しています。

答え1

DebianでUbuntuの方法を適用しようとしました。これは通常は機能しますが、この特別な場合は機能しません。

Ubuntu は Debian から派生しており、インストーラや GUI 以外はあまり変わりませんでした。順序locale-genは変更される他のいくつかの項目の1つです。理由はわかりません。

Debianでは、このlocale-genコマンドは引数を使用せず、設定されたロケールのリストに基づいてコンパイルされたロケール定義を再生成します。使用するロケール選択を変更するには、ファイルを編集してコマンドを/etc/locale.gen実行します。locale-genまたは、dpkg-reconfigure localesrootとして実行し、必要な追加ロケールを選択し(不要なロケールを選択解除)、[OK]をクリックします。

Ubuntuでは、引数なしでコマンドを実行すると、設定されたロケールのリストlocale-genに基づいてコンパイルされたロケール定義が再生成されます。ただし、一部のパラメータを渡すと、そのパラメータがリストに追加され、すぐに生成されます。ロケールリストはに保存されます/var/lib/locales/supported.d/localdpkg-reconfigure locales実行すると、選択内容を変更する機会を与えることなく、コンパイルされたロケールのみが再生成されます。

要約すると、en_US.UTF-8利用可能なロケールのリストに追加するには:

  • Debian、インタラクティブ:dpkg-reconfigure locales
  • Debian、オートメーション:sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && locale-gen
  • Ubuntu、自動化:locale-gen en_US.UTF-8

答え2

インターネットを盲目的に信頼するのではなく、実際にlocal-genのmanファイルを読んだ後、locale-gen実際に生成する必要があることがわかりました/etc/locale.gen。コメントを削除してen_US.UTF-8正常に作成しました。

関連情報