web-dev-qa-db-ja.com

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_ALLen_US.UTF-8に設定できません。

私は何か間違ったことをしていますか? Debian 8.1を実行しています。

8
Erik S

DebianでUbuntuのレシピを適用しようとしました。これは通常は機能しますが、この特定のケースでは機能しません。

UbuntuはDebianから派生したもので、インストーラーとGUI以外はほとんど変わりません。 _locale-gen_コマンドは、それが変更する他の数少ないものの1つです。理由はわかりません。

Debianでは、_locale-gen_コマンドは引数を取らず、設定されたロケールのリストに従ってコンパイルされたロケール定義を再生成します。使用するロケールの選択を変更するには、ファイル_/etc/locale.gen_を編集してから、_locale-gen_コマンドを実行します。または、_dpkg-reconfigure locales_をルートとして実行し、必要な追加のロケールを選択して(不要なロケールの選択を解除して)、[OK]を押します。

Ubuntuでは、引数なしで_locale-gen_コマンドを実行すると、構成されたロケールのリストに従ってコンパイルされたロケール定義が再生成されます。しかし、いくつかの引数を渡すと、それらはリストに追加され、すぐに生成されます。ロケールのリストは_/var/lib/locales/supported.d/local_に保持されます。 _dpkg-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_

インターネットを盲目的に信頼する代わりに、locale-genのmanファイルを実際に読み取った後、locale-genは実際に/etc/locale.genからロケールを生成することがわかりました。そこでen_US.UTF-8のコメントを外すことで、なんとか生成することができました。

5
Erik S