loadlocale.c _nl_intern_locale_data erro de asserção

0

Trabalhando no Debian Jessie, eu habilitei o repositório unstable do Debian (mesmo problema com testes). Depois disso, a instalação do cmake causaria um erro:

[...]
dpkg: error while cleaning up:
 subprocess rm command for cleanup was killed by signal (Aborted)
dpkg-split: loadlocale.c:129: _nl_intern_locale_data: Assertion 'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
[...]

Depois disso, usar a linha de comando é quase impossível, já que a maioria dos comandos, incluindo o sudo, lança seu próprio erro:

>$ ls
ls: loadlocale.c:129: _nl_intern_locale_data: Assertion 'cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted

Como posso me recuperar desse erro sem desligar a máquina?

Além disso, isso é um bug no loadlocale.c? Aparentemente, problemas semelhantes acontecem em todo o lugar: link
link
link

    
por GammaSQ 16.05.2018 / 09:45

1 resposta

0

Eu descobri uma solução, graças aos posts: link
Problema do Não é possível definir localidade; verifique se $ LC_ * e $ LANG estão corretos!

No entanto, ainda não sei onde colocar a culpa por este problema.

Primeiro, para obter uma linha de comando utilizável, $LANG precisa ser definido:

>$ LANG=/usr/lib/locale/en_US

(a configuração LANG=en_US NÃO funcionou, o caminho é obrigatório!)

Depois, a linha de comando deve poder ser usada novamente. Edite locale.gen como root e descomente todos os códigos de idioma que você deseja usar em seu sistema:

>$ sudo vim /etc/locale.gen

Agora execute locale-gen como root e o sistema deve ser corrigido.

Nota: dpkg-reconfigure locales não funcionou porque também gerou erros.

Para evitar esse problema, remova cmake antes de atualizar (se instalado) e atualize seu sistema usando apt-get upgrade . Não consegui descobrir qual pacote precisaria ser atualizado especificamente.

Eu pensei que a atualização de locales deveria ser suficiente, mas isso não funcionou, pois apt-get upgrade locales (ou pacotes relacionados) resulta em erro de borken packages:

>$ sudo apt-get upgrade locales
[...]
The following packages have unmet dependencies:
 libc-dev-bin : Depends: libc6 (< 2.20) but 2.27-3 is to be installed
                Recommends: manpages-dev but it is not going to be installed
 libc6-dev : Depends: libc6 (= 2.19-18+deb8u10) but 2.27-3 is to be installed
E: Broken packages

e, embora eu acredite que o pacote relevante seja console-data (já que ele perguntará qual layout de teclado você deseja usar durante uma atualização completa), a atualização de console-data resultou na atualização dos mesmos pacotes como apt-get upgrade teria atualizado.

    
por 16.05.2018 / 09:47