Linuxにログインする際の文字セットの問題を解決する方法

Linuxにログインする際の文字セットの問題を解決する方法

文字セットエラーは常に存在する

ロケール: LC_CTYPE をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_MESSAGES をデフォルトのロケールに設定できません: そのようなファイルまたはディレクトリはありません
ロケール: LC_ALL をデフォルト ロケールに設定できません: そのようなファイルまたはディレクトリはありません

背景

会社にはJenkinsサーバーがあります。歴史的な理由により、CentOS 6.5を使用しています。突然、ログイン時に文字セットに問題があるというメッセージが表示されました。実は私は長い間CentOS 7を使用してきましたが、このような問題は一度もありませんでした。トラブルシューティングのプロセス中にも混乱しました。

さまざまな文字セットエラーや無効な設定がありました。n日間調査を続けた後、glibcが原因であることがわかりました。エラーを撮影する過程で、バージョン2.15が使用できないこともわかりました。しまった、すぐにメモしました。

トラブルシューティングのプロセス

1. 直接的な対応は文字セットでした。Baidu の複数のドキュメント、さまざまな設定、さまざまな更新プラグインを確認しましたが、機能しませんでした。さらに、手元に他の作業があったため、数日間遅れました。

今日、じっくり考えてみました。どの文字セットも有効ではないので、文字セットの問題ではないはずです。読み込みプロセスに問題があるに違いありません。しかし、サーバーはここ数日何もしていません。退屈してBaiduを閲覧しました。突然、glibcに関連する投稿を見ました。それからBaiduの検索を続けました。本当に他にも同様の問題に遭遇した人がいます。彼らは、コンパイル時にmake localedata/install-localesを追加する必要があると言っていました。解決策を理解した後、すぐに試しました。

2. システムのデフォルトは 2.12 です。いくつかのプラグイン要件のため、2.14 にアップグレードしました。当初は 2.12 にダウングレードしたかったのですが、2.15 をダウンロードして再コンパイルすれば、理論的にはすべての問題が解決するはずだと考えました。

3. glibc-2.15 のリソースをオンラインで探し、ダウンロード、コンパイル、インストールします。通常の操作の後、/lib64/libc.so.6 ソフト リンクを glibc-2.15 にポイントします。すると、エラー Illegal instruction (core dumped) が再度報告され、システムはログインできなくなります。すぐに LD_PRELOAD=/lib64/libc-2.12.so ln -sf /lib64/libc-2.12.so /lib64/libc.so.6 を修復し、まず 2.12 にダウングレードします。少なくとも文字セットの問題は解決しましたが、これは機能しません。2.15 へのアップグレードを何度も試みた後、ついに失敗し、インターネット上で関連する解決策は見つかりませんでした。

4. システムの互換性の問題かもしれないとしか思えませんでした。諦めずに再度 2.17 にアップグレードしてみました。それでも正常に動作し、今度はようやく動作しました。 。 。

具体的なプロセス

1. システムのglibcバージョンライブラリを確認する

文字列 /lib64/libc.so.6 |grep GLIBC_

最高は 2.12 であることがわかったので、2.17 にアップグレードするつもりです。2.15 はインストールしないでください。私のせいかどうかわかりませんが、とにかくインストールできません。

2.ダウンロードしてインストールする

ダウンロードディレクトリ/data/installに入り、コマンドを実行します。詳細は説明しません。理解していただけると思います。

https://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz をダウンロードしてください

tar xvf glibc-2.17.tar.gz

glibc-build-2.17 を mkdir します

glibc-build-2.17/ をインストールします

../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

-j8 を作成し、インストールし、localedata/install-locales を作成します。

3. 検証

文字列 /lib64/libc.so.6 | grep GLIBC

/lib64/libc.so.6 ファイルを置き換える必要はなく、ファイルのソフトリンクはすでに glibc-2.17 を指しているので、これで完了です。

上記はいずれも関連する知識ポイントです。私たちがまとめた内容が皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • Linux 上の MySQL 5.5/5.6 で文字セットのエンコーディングを UTF8 に変更する方法

<<:  MySQL の完全なデータベース バックアップからデータベースとテーブルを復元する方法

>>:  mysql-8.0.15-winx64 解凍バージョンのインストールチュートリアルと終了する 3 つの方法

推薦する

vscode で Prettier Code プラグインを使用する詳細なチュートリアル

なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...

Vue3+TypeScriptは再帰メニューコンポーネントの完全な例を実装します

目次序文必要成し遂げる最初のレンダリングメニュー項目をクリックしますスタイルの区別デフォルトのハイラ...

フォーム要素の簡単な実装コードでは登録を例に挙げています

コード実装:コードをコピーコードは次のとおりです。 <!DOCTYPE html> &l...

Dockerが独自のローカルイメージリポジトリを構築するための手順

1. 環境と準備1. Ubuntu 14.04 2.Docker環境2. 建設プロセス1. ミラーソ...

Vueのフィルターとディレクティブの詳細な説明

目次vueカスタムディレクティブグローバル指令ローカル指示使用フック関数(両方ともオプション)使用方...

Linux システムで Tomcat のポート 80 を使用する方法

アプリケーションシナリオ多くの場合、Linux サーバーに tomcat や nginx などのソフ...

jQueryでフルスクリーンスクロール効果を実現

この記事の例では、フルスクリーンスクロールを実現するためのjQueryの具体的なコードを参考までに共...

Docker を使用した Laravel アプリケーションのデプロイ例

この記事で使用されているPHPベースイメージはphp:7.3-apacheです。この記事の Lara...

Ubuntu 20.04にvncserverをインストールする方法

Ubuntu 20.04は2020年4月に正式にリリースされました。本日、ミラーシステムを正式にイン...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

Reactはグローバル箇条書きボックスメソッドをカプセル化します

この記事の例では、Reactカプセル化グローバルポップアップボックスの具体的なコードを参考までに共有...

Alibaba CloudにMySQLをインストールする方法の詳細な説明

軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...

Vueモバイル端末は左スライド編集と削除の全プロセスを実現します

序文プロジェクトのニーズに応じて、Vue-touch を使用して、vue モバイル端末の左スワイプ編...

docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析

Docker-ComposeとはCompose プロジェクトは、以前の fig プロジェクトから派生...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...