Arch Linux: falha ao definir a localidade. Conserte seu sistema

0

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.

  1. verifique o /etc/locale.conf
  2. executar locale-gen
  3. verifique a saída de locale
  4. 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.

    
por MountainX 19.01.2018 / 03:40

1 resposta

4

Uma de suas configurações de localidade (ou seja, LC_TIME ) é definida para uma localidade que você não gerou (ou seja, en_GB.UTF-8 ). O erro desaparecerá se você ativar essa localidade em /etc/locale.gen e gerar novamente os códigos de idioma.

Como a configuração difere daquele definido em /etc/locale.conf , você pode ter colocado uma substituição em um de seus scripts de inicialização. Como o erro não ocorre em um console virtual, suspeito de .xinitrc ou .xprofile . No entanto, se você estiver usando um ambiente de área de trabalho completo, eles geralmente terão suas próprias configurações, incluindo configurações de localidade.

    
por 19.01.2018 / 04:13