web-dev-qa-db-fra.com

LOADLOCALE.C _NL_INTNERN_LOCALE_DATA Assertion Erreur

Travailler à Debian Jessie, j'ai activé le référentiel de Debian instable (même problème avec les tests). Ensuite, l'installation de la cmake lancerait une erreur:

[...]
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.
[...]

Après cela, l'utilisation de la ligne de commande est irréprochable, car la plupart des commandes, y compris sudo, jettent leur propre erreur:

>$ 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

Comment puis-je récupérer de cette erreur sans arrêter la machine?

En outre, est-ce un bogue dans loadlocale.c? Apparemment, des problèmes similaires se produisent partout:
[.____] https://github.com/junegunn/fzf/issues/356
[.____] https://www.reddit.com/r/arlinux/comments/3g9dzf/loadlocalec130_error_on_euverything/
[.____] https://patchwork.openeMedded.org/patch/114739/

6
GammaSQ

J'ai pensé une solution, gros merci à ces messages:
[.____] https://stackoverflow.com/questions/37121895/yocto-build-locale-c-1
[.____] problème de ne peut pas définir les paramètres locaux; assurez-vous que $ lc_ * et $ lang sont corrects!

Cependant, je ne suis toujours pas sûr où mettre le blâme de ce problème.

Premièrement, pour obtenir une ligne de commande utilisable, $LANG doit être défini:

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

(réglage LANG=en_US n'a pas fonctionné, chemin est requis!)

Ensuite, la ligne de commande doit être utilisable à nouveau. Éditer locale.gen En tant que root et décotez toutes les localités que vous voudriez utiliser sur votre système:

>$ Sudo vim /etc/locale.gen

Maintenant courir locale-gen En tant que racine et le système doit être corrigé.

Noter: dpkg-reconfigure locales n'a pas fonctionné car il a également jeté des erreurs.


Pour éviter ce problème, supprimez cmake avant de mettre à niveau (s'il est installé) et mettez à niveau votre système à l'aide de apt-get upgrade. Je n'ai pas pu comprendre quel paquet aurait besoin de mettre à niveau spécifiquement.

Je pensais que la mise à niveau locales devrait suffire, mais cela n'a pas fonctionné depuis apt-get upgrade locales (ou packages associés) entraîne une erreur de forfaits de Borken:

>$ 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

et bien que je crois que le paquet pertinent est console-data (puisqu'il demandera bien ce que vous voudriez utiliser le clavier à utiliser lors d'une mise à niveau complète), à ​​la mise à niveau console-data a abouti aux mêmes forfaits étant mis à niveau comme apt-get upgrade aurait mis à niveau.

8
GammaSQ