ロケールを生成すると、「エラー:無効なエントリ 'en_US'」が表示されるのはなぜですか?

ロケールを生成すると、「エラー:無効なエントリ 'en_US'」が表示されるのはなぜですか?

コードは言葉よりも大きく話します。

root@myhost # locale-gen
Generating locales (this might take a while)...

(ここで少しスキップしてください)

error: Bad entry 'en_GB '
  en_GB.UTF-8... done

(ここで少しスキップしてください)

  en_SG.UTF-8... done
error: Bad entry 'en_US '
  en_US.ISO-8859-1... done
  en_US.UTF-8... done
error: Bad entry 'en_US.iso88591 '
error: Bad entry 'en_US.iso885915 '
  en_ZA.UTF-8... done

(ここで少しスキップしてください)

Generation complete.

これらのエラーが発生する理由とそれを防ぐ方法は何ですか?

メモ:

  • 私はLinux Mint 18.2を使用していますが、Mint 18.1と一緒に(ほぼ?)ある時点でこれが起こり始めました。私はそれらがすべてUbuntu 16.04に基づいていると思います。
  • ;以下では、これらの「無効なエントリ」(末尾に余分なスペースがあるかないか)を含むファイルを見つけることができませんでした/etc。具体的に/etc/locale.gen

追加情報:

関連情報/etc/locale.gen:

# grep -v "#" /etc/locale.gen | sed "s/$/+/" | grep "en_"
en_GB.UTF-8 UTF-8+
en_US ISO-8859-1+
en_US.UTF-8 UTF-8+

ベストアンサー1

locale-gen(よく書かれていない)bashスクリプトです。このバグは以下によって報告されました:

is_entry_ok() {
  if [ -n "$locale" -a -n "$charset" ] ; then
    true
  else
    echo "error: Bad entry '$locale $charset'"
    false
  fi
}

したがって、ここで質問は$charset空です。

生成されるロケールのリストは/etc/locale.genから取得されます/var/lib/locales/supported.d

ファイル自体にen_US文字セット名が含まれていない可能性があります。

/etc/locale.genそうでないため、en_SG.UTF-8ファイルがある可能性が高く、ファイルに/var/lib/locale/supported.d誤った行がある可能性があります。犯人を特定すると、dpkg -Sそのルート上でその犯人がどのパッケージから来たかを確認できます(存在する場合)。

おすすめ記事