Depois de atualizar meu sistema Arch Linux ontem, comecei a receber um erro semelhante a este:
Failed to set locale. Fix your system.
Esse erro específico vem da tentativa de executar o snapper. No entanto, aqui está outro erro relacionado:
bsdcpio: Failed to set default locale
perl dá um aviso semelhante, que vou colar abaixo.
Não está limitado a nenhuma aplicação específica; parece ser um problema de todo o sistema.
Eu não recebi esses erros antes da atualização de ontem. Além disso, eu não recebo os erros em um console virtual. Eu só os obtenho quando dentro do X (KDE). Por exemplo, recebo o erro acima se eu executar um comando snapper ls no konsole, mas não obtenho nenhum erro se executar o mesmo comando snapper ls em um console virtual.
Meus outros sistemas Arch, que são quase idênticos, não têm esse problema.
Minhas primeiras tentativas de solução de problemas foram as seguintes.
- verifique o /etc/locale.conf
- executar
locale-gen
- verifique a saída de
locale
- veja se o snapper é executado sem um erro
Não vejo erros no arquivo locale.conf, mas executar local-gen
não resolve o problema.
Aqui está a saída relevante:
# localectl list-locales
en_US.utf8
# grep -v "^#" /etc/locale.conf
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
# locale-gen
Generating locales...
en_US.UTF-8... done
Generation complete.
# locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_GB.UTF-8
LC_COLLATE=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
# locale -a
C
en_US.utf8
POSIX
Aqui está o aviso do perl:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = "",
LC_ALL = (unset),
LC_MEASUREMENT = "en_US.UTF-8",
LC_PAPER = "en_US.UTF-8",
LC_MONETARY = "en_US.UTF-8",
LC_NAME = "en_US.UTF-8",
LC_COLLATE = "en_US.UTF-8",
LC_CTYPE = "en_US.UTF-8",
LC_ADDRESS = "en_US.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_MESSAGES = "en_US.UTF-8",
LC_TELEPHONE = "en_US.UTF-8",
LC_IDENTIFICATION = "en_US.UTF-8",
LC_TIME = "en_GB.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
A seguinte linha aparece quando eu corro locale
dentro do Konsole (no X), mas não quando eu executo locale
em um console virtual:
locale: Cannot set LC_ALL to default locale: No such file or directory
Eu posso executar o comando snapper ls em um console virtual sem erros.
Até onde eu sei, o Arch não tem /etc/default/locale
. Esse arquivo não está presente em nenhuma das minhas máquinas Arch.
A reinicialização do sistema não ajudou.