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
на его пути, чтобы увидеть, из какого пакета он пришел, если таковой имеется.