locale-gen é um script (não muito bem escrito) bash . Esse erro é relatado por:
is_entry_ok() {
if [ -n "$locale" -a -n "$charset" ] ; then
true
else
echo "error: Bad entry '$locale $charset'"
false
fi
}
Então, aqui o problema é que $charset está vazio.
A lista de localidades a serem geradas é compilada de /etc/locale.gen e todos os arquivos em /var/lib/locales/supported.d .
Possivelmente, um dos arquivos contenha en_US sozinho sem o nome de um conjunto de caracteres.
Como o /etc/locale.gen não tem en_SG.UTF-8 , você provavelmente tem arquivos em /var/lib/locale/supported.d e provavelmente são os que têm linhas malformadas. Depois de identificar o culpado, você pode usar dpkg -S em seu caminho para ver de qual pacote veio, se houver.