1. 穴に落ちる最近、社内のテストサーバー(CentOS6.5)で、特定のソフトウェアをインストールするために、glibcライブラリをアップグレードする必要がありました。glibcはLinuxのコアライブラリです。元のバージョンを直接置き換えてアップグレードすると、予期しない例外が発生する可能性があります(大量のコマンドが実行できないなど)。 $ mkdir build // glibc-2.14 ディレクトリにビルド フォルダーを作成します。$ cd build // ビルド ディレクトリに入ります。$ ../configure --prefix=/opt/glibc-2.14 // 注: glibc を設定し、現在の glibc-2.14 インストール ディレクトリを設定します。$ make && make install // glibc-2.14 ライブラリをコンパイルしてインストールします。 /lib64/libc.so.6 を指すソフトリンクを変更すると、プログラムは正常に実行されますが、中国語の文字が文字化けします。 私の経験とインターネット上のほとんどの人の意見によると、これは簡単だと思います。言語をリセットするだけで済むのではないでしょうか? 実際に実行して、シェルで locale を実行すると、次のエラーが発生します。 ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません ロケール: LC_ALL をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません _注: 上記のエラーは、locale コマンドを手動で実行する場合だけでなく、ssh 経由でリモートでシェルにログインするたびに発生します。 _ 2. 無駄な努力上記の問題を解決するために、Baidu と G-Dog でいろいろ検索し、以下の方法を試しましたが、問題は依然として存在します。 次のコマンドを使用します。 エクスポートLANG="en_US.utf8" 環境変数 LANG を変更できます。変更はすぐに有効になります。システムを再起動すると、言語は元の言語に戻ります。言語を変更するには、他に 2 つの方法があります。 1. 次のファイルを設定します。 vi /etc/sysconfig/i18n 元の構成を次のように変更します。 LANG="zh_CN.utf8" LANG="en_US.utf8"に変更します 保存後、すぐには反映されませんが、再起動後に反映されます。 3. 若さの衝動パニック状態になっていたとき、しばらく外に出てタバコを吸いました。問題の本質に戻ったほうがいいようです。エラー「そのようなファイルまたはディレクトリはありません」が表示されたので、存在しないかシステムでサポートされていないロケールを設定したことを意味します。たとえば、上記のソリューションでは、言語を LANG="en_US.UTF-8" に変更すると、ロケールが zh_CN.UTF-8 に設定されます。オペレーティングシステムが構成を通じてローカリゼーション環境を初期化したときに、対応する言語パックが見つかりませんでした (実際には、言語パックだけではなく、ロケールにはタイムゾーン、通貨の測定なども含まれます)。つまり、OS は対応するロケールファイルを見つけることができません。理解すれば、この問題は簡単に解決できます。 まず、localeコマンドを使用して、システムにこのロケールがあるかどうかを確認します。 [****@****** bin]# ロケール -a|grep en_US ja_JP 日本語 en_US.iso88591 en_US.iso885915 en_US.utf8 これを見たときはびっくりしました。en_US.utf8 が含まれているので、OS はロケールを en_US.utf8 に設定できるということです。それなのに、なぜ次のエラーが表示されるのでしょうか。 ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません ロケール: LC_ALL をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません 4. 希望の光何か見落としていませんか? 出発点に戻ってもう一度調べてください。突然、疑問が浮かびました。アップグレードを上書きするのではなく、新しい glibc ライブラリを再インストールしたので、システムには少なくとも 2 つのロケール コマンドがあることになります。CentOS は、どのコマンドを使用するかをどのように判断するのでしょうか。 システムのデフォルトの /usr/bin/locale の代わりに、新しくインストールした /opt/glibc-2.14/bin/locale が使用されている可能性がありますか? この考えは、次のコマンドで簡単に確認できます。 [****@****** bin]# /opt/glibc-2.14/bin/locale -a C POSIX 当然ながら、このロケールは C と POSIX のみをサポートし、en_US.utf8 はサポートしていないため、ロケールを en_US.utf8 に設定すると、当然「そのようなファイルまたはディレクトリはありません」というエラーが報告されます。 問題は、/opt/glibc-2.14/bin/locale コマンドにリストされているローカライズされた言語パッケージはどこから来るのかということです。設定ファイルを通してですか?または、ディレクトリ内のファイルを直接読み取りますか? このディレクトリの場所を見つけるために、strings コマンドを思いつき、次のコマンドを直接使用しました。 [****@****** bin]# 文字列 /opt/glibc-2.14/bin/locale|grep ロケール ロケールの設定 /ロケール。 ロケール (GNU %s) %s ロケール ロケール すべてのロケール ロケールアーカイブ ロケール: %-15.15s アーカイブ: /opt/glibc-2.14/lib/locale/locale-archive ロケール: %-15.15s ディレクトリ: %.*s LC_CTYPE をデフォルトのロケールに設定できません LC_MESSAGES をデフォルトのロケールに設定できません LC_COLLATE をデフォルトのロケールに設定できません LC_ALL をデフォルトのロケールに設定できません 利用可能なロケールの名前を記入 ロケール固有の情報を取得します。 確かに、 /opt/glibc-2.14/lib/locale/locale-archiveというパスがあります。名前から、これはおそらく、サポートされているすべてのロケール ディレクトリ (またはアーカイブ ファイル) の場所を読み取るための locale コマンドであると推測するのは簡単です。 5. 問題KO上記のディレクトリを ls すると、ディレクトリが実際に空であり、locale-archive というアーカイブ ファイルが存在しないことがわかります。 [****@****** bin]# ll /opt/glibc-2.14/lib/locale/ 解決策は非常に簡単です。ロケールコマンド /usr/bin/locale で使用される locale-archive ファイルを /opt/glibc-2.14/lib/locale/locale-archive にコピーするだけです。 [****@****** bin]# cp /usr/lib/locale/locale-archive /opt/glibc-2.14/lib/locale/locale-archive /usr/bin/locale が使用するロケール ファイル ディレクトリが /usr/lib/locale/locale-archive であることをどうやって知るのかと尋ねる人もいるかもしれません。答えは簡単です。Baidu を使用すれば簡単に見つけることができます。 コピーが完了したら、セッションを終了し、再度ログインして、/opt/glibc-2.14/bin/locale コマンドを再度実行します。No such file or directory エラーは表示されず、以前の文字化けの問題も解決されます。 6. 追記上記は、centos 6.5 環境に glibc ライブラリを手動でインストールした後、文字化けしたコードの問題を解決した方法を記録したものです。このプロセスには、ロケールの原則に関する知識も必要でしたが、これもまた学びました。 CentOS6.5にglibc-2.14をインストールした後、ロケールで「そのようなファイルまたはディレクトリはありません」という問題を解決する方法についての記事はこれで終わりです。glibcをインストールした後、中国語の文字化けの問題を解決する方法の詳細については、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を続けて参照してください。今後とも123WORDPRESS.COMを応援してください。 以下もご興味があるかもしれません:
|
<<: XHTML におけるタイトルタグと段落タグの使用に関する詳細な説明
>>: ウェブサイトのフロントエンドをエレガントでユーザーにとって魅力的なものにする方法
目次1.ソケットを作成する2. ソケットをバインドする3. 聞き手を作る。聞く4. 接続が受け入れら...
目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...
1. インストールパッケージMYSQLサービスダウンロードアドレス:MySQL公式サイトからダウンロ...
1. フローティングとは何ですか?フローティングは、その名の通り、浮遊することを意味します。要素がド...
目次1. マップ方式2. 応用背景:需要開発プロセス中に、一部のインターフェースは、ページに表示する...
1. 環境整備各コンテナの IP アドレス: nginx: 172.16.10.10マイSQL: 1...
勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...
目次JSONPとはJSONP 原則JSONP実装1. Ajaxでクロスドメインリクエストが行われると...
この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
目次1. シーンレイアウト2. ハンドルリスナーを追加する1. イベントの変更を監視する2. 座標設...
フレーム構造タグ <frameset></frameset>フレームを使用す...
1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...
1: nginxサーバーソリューション、.conf構成ファイルを変更する解決策は2つある1: 位置 ...
Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...
軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...