Was ist der richtige Weg, um eine Zusicherung in loadlocale.c zu korrigieren?

10

Ich habe Ubuntu kürzlich auf 18.04 aktualisiert. Danach schlug die Ausgabe des Befehls ldständig mit der folgenden Behauptung fehl:

loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

Ich habe dieses Problem gegoogelt und es sieht so aus, als ob dies ein bekanntes Problem ist. Alle Lösungen, die ich gelesen habe, schlugen vor, dies mit dem folgenden Befehl zu beheben:

export LC_ALL=C

Siehe zum Beispiel diesen . Dadurch werden jedoch beispielsweise die Schriftarten der Kommentare zu meiner Muttersprache in VIM unterbrochen.

Diese Lösung ist also nicht für mich geeignet. Gibt es andere Möglichkeiten, um dieses Problem zu beheben?

Alex Hoppus
quelle

Antworten:

2

Ich hatte dieses Problem unter Ubuntu 14 vertrauenswürdig, ich habe es wie folgt gelöst.

Bearbeiten /etc/locale.genSie zunächst die gewünschten Gebietsschemas und fügen Sie sie hinzu.

Stellen Sie sicher, dass der utf8Name im Gebietsschema klein geschrieben ist, nicht z UTF-8.

Also meine sind:

en_US.utf8
ru_RU.utf8

Führen Sie nun als root aus:

rm -f /usr/lib/locale/locale-archive
locale-gen --no-archive
locale-gen --no-archive en_US.utf8
locale-gen --no-archive ru_RU.utf8

Die --no-archiveFlagge ist wichtig.

Stellen Sie nun sicher, dass Sie in Ihren Startdateien wie ~/.bash_profileund ~/.bashrcusw. LANGVariablen für das Kleinbuchstabenformular festgelegt haben. Das richtige Formular finden utf8Sie in den Verzeichnissen /usr/lib/locale.

Rafael Kitover
quelle
Dies funktionierte für mich unter Ubuntu 18.04, jedoch mit den folgenden Änderungen: 1. Verwenden Sie en_US.UTF-8 UTF-8 in locale.gen 2. Dann locale-gen --no-archive en_US.UTF-8
Alex T
0

Ich habe dies zu meiner .bashrc hinzugefügt und es hat das Problem für Ubuntu 18 und 20 behoben, als ich dieselbe Nachricht mit einer alten 32-Bit-GDB für einen Arm-Cross-Compiler hatte

export LANG = C.

user493721
quelle