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 つの方法

推薦する

一般的なMySQLコマンドの概要

mysqlrootパスワードの設定と変更初めて MySQL データベースに入ります。 !環境変数にm...

ウェブインターフェースデザインでウェブサイトのスタイルガイドを作成する方法(画像とテキスト付き)

スタイル ガイドとは何でしょうか? 簡単に言えば、ストーリーを伝える方法を説明するドキュメントです。...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

目次MVCとMVVMの違い前述のMVCC の概要長所と短所MVVM概要MVVM 実装者 — Vue ...

Linux での Jenkins の詳細なインストール手順

目次1. JDKをインストールする2. Jenkinsをインストールする3. Jenkinsの設定を...

MySQL で不明なフィールド名を回避する方法

序文この記事では、DDCTF の 5 番目の質問、つまり不明なフィールド名をバイパスする手法を紹介し...

Vueドロップダウンリストの2つの実装方法の比較

Vueドロップダウンリストの2つの実装最初の方法はv-forを使用する <el-select ...

MySQL学習記録: KEYパーティションが引き起こした血なまぐさい事件

需要背景ビジネス テーブル tb_image のデータの一部は次のとおりです。id は一意ですが、i...

vue-pdf はオンラインファイルプレビューを実現します

この記事では、参考までに、ファイルのオンラインプレビューを実現するためのvue-pdfの具体的なコー...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

MySQL チュートリアル データ定義言語 DDL の例 詳細な説明

目次1. SQL言語の基本機能の紹介2. データ定義言語の目的3. データベースの作成と破棄4. デ...

CSSフィルターにはどんな魔法の用途があるか

背景基本概念CSS filterプロパティは、ぼかしや色の変化などのグラフィック効果を要素に適用して...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

JavaScript 文字列の一般的なメソッドの詳細な説明

目次1. キャラクター文法パラメータ索引戻り値2. 連結文法パラメータ文字列2 [, …文字列N]戻...

Vue CLI のモードと環境変数の詳細な説明

序文実際のプロジェクトの開発では、通常、プロジェクト開発フェーズ、テストフェーズ、最終オンラインフェ...