1. In die Grube fallen Vor kurzem musste ein Testserver (CentOS6.5) innerhalb des Unternehmens die glibc-Bibliothek aktualisieren, um eine bestimmte Software zu installieren. glibc ist eine Kernbibliothek von Linux. Wenn die Originalversion direkt ersetzt und aktualisiert wird, können unvorhersehbare Ausnahmen auftreten (z. B. können viele Befehle nicht ausgeführt werden). $ mkdir build // Erstellen Sie einen Build-Ordner im Verzeichnis glibc-2.14$ cd build // Wechseln Sie in das Build-Verzeichnis$ ../configure --prefix=/opt/glibc-2.14 // Hinweis: Konfigurieren Sie glibc und legen Sie das aktuelle Installationsverzeichnis von glibc-2.14 fest$ make && make install // Kompilieren und installieren Sie die Bibliothek glibc-2.14 Nach dem Ändern des Softlinks, der auf /lib64/libc.so.6 verweist, kann das Programm normal ausgeführt werden, aber die chinesischen Schriftzeichen sind verstümmelt . Aus meiner eigenen Erfahrung und den Meinungen der meisten Leute im Internet halte ich das für ganz einfach. Kann ich nicht einfach die Sprache zurücksetzen und das Problem wird behoben? Tun Sie es einfach, führen Sie „locale“ in der Shell aus, und der folgende Fehler tritt auf: Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis Gebietsschema: LC_ALL kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis _Hinweis: Der obige Fehler tritt nicht nur beim manuellen Ausführen des Locale-Befehls auf, sondern auch jedes Mal, wenn Sie sich remote über SSH bei der Shell anmelden. _ 2. Vergeblich kämpfenUm das obige Problem zu lösen, habe ich viel auf Baidu und G-Dog gesucht und die folgenden Methoden ausprobiert, aber das Problem besteht weiterhin. Verwenden Sie den folgenden Befehl: export LANG="en_US.utf8" Sie können die Umgebungsvariable LANG ändern. Die Änderung wird sofort wirksam. Beim Neustart des Systems wird die Sprache auf die ursprüngliche Sprache zurückgesetzt. Es gibt zwei weitere Möglichkeiten, die Sprache zu ändern: 1. Konfigurieren Sie die folgenden Dateien: vi /etc/sysconfig/i18n Ändern Sie die ursprüngliche Konfiguration wie folgt: LANG="zh_CN.utf8" Ändern Sie in LANG="en_US.utf8" Nach dem Speichern wird es nicht sofort wirksam, sondern erst nach einem Neustart. 3. Der Impuls der JugendAls ich in Panik geriet, ging ich kurz raus, um zu rauchen. Ich sollte wohl auf den Kern des Problems zurückkommen. Da der Fehler „Keine solche Datei oder kein solches Verzeichnis“ angezeigt wurde, bedeutet dies, dass wir ein Gebietsschema konfiguriert haben, das nicht existiert oder vom System nicht unterstützt wird. Beispielsweise wird in der obigen Lösung durch Ändern der Sprache LANG="en_US.UTF-8" das Gebietsschema auf zh_CN.UTF-8 eingestellt. Als das Betriebssystem die Lokalisierungsumgebung über die Konfiguration initialisierte, fand es das entsprechende Sprachpaket nicht (tatsächlich ist es nicht nur das Sprachpaket, das Gebietsschema umfasst auch Zeitzone, Währungsmaß usw.), d. h. das Betriebssystem kann die entsprechende Gebietsschemadatei nicht finden. Wenn Sie dieses Problem verstehen, ist es leicht zu lösen. Verwenden Sie zunächst den Befehl „locale“, um zu prüfen, ob dieses Gebietsschema im System vorhanden ist [****@****** bin]# locale -a|grep en_US de_DE de_US.iso88591 de_US.iso885915 de_DE.utf8 Ich war fassungslos, als ich es sah. Es enthält en_US.utf8, was bedeutet, dass das Betriebssystem die Konfiguration des Gebietsschemas auf en_US.utf8 unterstützt. Warum erscheint dann immer noch der folgende Fehler: Gebietsschema: LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis Gebietsschema: LC_ALL kann nicht auf Standardgebietsschema eingestellt werden: Keine solche Datei oder kein solches Verzeichnis 4. Ein HoffnungsschimmerHaben Sie etwas übersehen? Gehen Sie zurück zum Ausgangspunkt und prüfen Sie es noch einmal. Plötzlich kam mir eine Frage in den Sinn: Wir haben eine neue glibc-Bibliothek neu installiert, anstatt das Upgrade zu überschreiben, was bedeutet, dass es im System mindestens zwei Locale-Befehle gibt. Woher weiß CentOS, welcher zu verwenden ist? Könnte es sein, dass unser neu installiertes /opt/glibc-2.14/bin/locale anstelle des Systemstandards /usr/bin/locale verwendet wird? Diese Annahme lässt sich leicht mit dem folgenden Befehl überprüfen: [****@****** bin]# /opt/glibc-2.14/bin/locale -a C POSIX Natürlich unterstützt dieses Gebietsschema nur C und POSIX, aber nicht en_US.utf8. Wenn wir also das Gebietsschema auf en_US.utf8 konfigurieren, wird natürlich der Fehler „Datei oder Verzeichnis nicht vorhanden“ gemeldet. Die Frage ist, woher die lokalisierten Sprachpakete stammen, die im Befehl /opt/glibc-2.14/bin/locale aufgelistet sind? Über eine Konfigurationsdatei? Oder die Dateien direkt in einem Verzeichnis lesen? Um den Speicherort dieses Verzeichnisses zu finden, habe ich an den Strings-Befehl gedacht und direkt den folgenden Befehl verwendet: [****@****** bin]# Zeichenfolgen /opt/glibc-2.14/bin/locale|grep locale Gebietsschema festlegen /Gebietsschema. Gebietsschema (GNU %s) %s /opt/glibc-2.14/lib/locale /opt/glibc-2.14/share/locale alle Gebietsschemas /opt/glibc-2.14/lib/locale/locale-archive Gebietsschema: %-15.15s Archiv: /opt/glibc-2.14/lib/locale/locale-archive Gebietsschema: %-15.15s Verzeichnis: %.*s LC_CTYPE kann nicht auf Standardgebietsschema eingestellt werden LC_MESSAGES kann nicht auf Standardgebietsschema eingestellt werden LC_COLLATE kann nicht auf Standardgebietsschema eingestellt werden LC_ALL kann nicht auf Standardgebietsschema eingestellt werden Schreiben Sie die Namen der verfügbaren Gebietsschemas Erhalten Sie länderspezifische Informationen. Tatsächlich gibt es einen Pfad /opt/glibc-2.14/lib/locale/locale-archive . Aus dem Namen lässt sich leicht erraten, dass dies wahrscheinlich der Locale-Befehl zum Lesen des Speicherorts aller unterstützten Locale-Verzeichnisse (oder Archivdateien) ist. 5. Problem KOEin Blick auf das obige Verzeichnis zeigt, dass es tatsächlich leer ist und keine Archivdatei mit dem Namen „Locale-Archive“ vorhanden ist. [****@****** bin]# ll /opt/glibc-2.14/lib/locale/ Die Lösung ist ganz einfach. Kopieren Sie einfach die Locale-Archivdatei, die vom Locale-Befehl /usr/bin/locale verwendet wird, nach /opt/glibc-2.14/lib/locale/locale-archive [****@****** bin]# cp /usr/lib/locale/locale-archive /opt/glibc-2.14/lib/locale/locale-archive Manche Freunde fragen sich vielleicht, woher Sie wissen, dass das von /usr/bin/locale verwendete Gebietsschemadateiverzeichnis /usr/lib/locale/locale-archive ist. Die Antwort ist einfach: Verwenden Sie Baidu und es ist leicht zu finden. Nachdem der Kopiervorgang abgeschlossen ist, beenden Sie die Sitzung, melden Sie sich erneut an und führen Sie den Befehl /opt/glibc-2.14/bin/locale erneut aus. Der Fehler „Keine solche Datei oder kein solches Verzeichnis“ wird nicht mehr angezeigt und das vorherige Problem mit verstümmelten Zeichen ist ebenfalls gelöst. 6. Nachtrag Oben ist beschrieben, wie ich das Problem des verstümmelten Codes gelöst habe, nachdem ich die glibc-Bibliothek manuell in der CentOS 6.5-Umgebung installiert hatte. Der Vorgang erforderte einige Kenntnisse über die Prinzipien des Gebietsschemas, die ich mir übrigens auch angeeignet habe. Dies ist das Ende dieses Artikels zur Lösung des Problems „Keine solche Datei oder kein solches Verzeichnis“ in der Locale nach der Installation von glibc-2.14 auf CentOS6.5. Weitere Informationen zur Lösung des Problems verstümmelter chinesischer Schriftzeichen nach der Installation von glibc finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Reines CSS zum Erreichen der Funktion „Klicken zum Erweitern und Lesen des Volltexts“
>>: Detaillierte Erklärung zur Verwendung von Titel-Tags und Absatz-Tags in XHTML
<br />Vorheriger Artikel: Webdesign-Tutorial...
Ich habe kürzlich Dreamweaver verwendet, um eine P...
In diesem Artikel wird der spezifische JS-Code zu...
Als ich anfing, Webseiten mit XHTML CSS zu entwer...
Inhaltsverzeichnis 1. Szeneneinführung 2 Code-Opt...
Problembeschreibung Durch die Konfiguration von n...
Inhaltsverzeichnis Vorwort vue-cli 2.0 Version vu...
1. Klicken Sie auf den Server-Host und dann in de...
Dieser Artikel beschreibt Ihnen, wie Sie MySQL 8....
Flex-Layout wird auch elastisches Layout genannt....
Dieser Artikel beschreibt anhand eines Beispiels,...
Inhaltsverzeichnis Serverplanung 1. Systemkompone...
Karten-Tags müssen paarweise vorkommen, d. h. <...
Inhaltsverzeichnis 1. Datenbank-Master-Slave-Klas...
Referenzdokumentation Offizielle Docker-Installat...