YUM変数の欠落によって引き起こされる問題に関する注記

 田震 360クラウドコンピューティング 

画像

ヒロインの宣言:運用・保守技術者として最も基本的な資質は、落ち着いてトラブルが発生しても慌てないことです。解決できない問題はありません!しかし、3フィートの凍結は一日の寒さではなく、経験は通常の時間の絶え間ない蓄積に依存します。もちろん、HULKチームは多くの第一線の経験を蓄積してきました。今日は、Yumコマンドを使用して日常の運用と保守で発生する小さな問題を共有します。後で、いくつかの実際の運用と保守の経験と乾物を共有しますので、ご期待ください。PS:豊富な第一線の技術と多様な表現形式はすべて「 HULK第一線の技術トーク」にあります、注意してください


問題現象

yumを使用してソフトウェアパッケージをインストールしたとき、「卵の痛み」現象が発生しました。どのソフトウェアパッケージをインストールしても、常に404が表示されます。404が表示されたときに最初に考えたのは、「何か問題がありますか?ヤムソース?」

次のように:

ロードされたプラグイン:fastestmirror、security
http://***.***.360.cn:/addops/%24releasever/os/x86_64/repodata/repomd.xml:[Errno 14] PYCURL ERROR22- "要求されたURL返されたエラー:404 Not Found "
他のミラーを試行しています。
エラー:リポジトリ:ADDOPS-baseのリポジトリメタデータ(repomd.xml)を取得できません。パスを確認して、再試行してください

エラーメッセージ:

[Errno 14] PYCURL ERROR 22-「要求されたURLがエラーを返しました:404が見つかりません」


問題分析

404エラーURLを注意深く見てください。間違った形式の変数 " %24releasever "があります。変数値は正常に表示されませんが、その背後にあるosとx86_64は表示されます。したがって、404エラーは変数の欠落が原因であると判断できます。

トラブルシューティング


変数%24releasever」はどこに設定されていますか?yum関連の構成ファイルを収集すると、いくつかの情報が見つかりました。

次のように:image.png



構成ファイルを確認したところ、releasever変数の値が実際にはシステムのバージョン番号を参照していることがわかりました。

では、この変数はどこで定義されていますか?


yum.conf構成ファイルを確認し、いくつかの情報を見つけました。

次のように:

[main]
cachedir = / var / cache / yum / $ basearch / $ releasever
keepcache = 0
debuglevel = 2
logfile = / var / log /
yum.logexactarch = 1
obsoletes = 1
gpgcheck = 1
plugins = 1
installonly_limit = 5
bugtracker_url = http://bugs.centos.org/set_project.php?project_id = 19&ref = http://bugs.centos.org/bug_report_page.php?category = yum
distroverpkg = centos-release


distroverpkgの値は、システムバージョン情報である必要があります。ただし、centos-releaseの値に異常は見られません。システムのバージョン情報なので、最初に思い浮かぶのは/ etc / issueファイルなので、システムのissueファイルを確認したところ、は正常ではなく、rpm- qf / etc / issue他の正常なマシンをチェックし、調査を続けて、このファイルが実際にRPMパッケージcentos-release-6-2.el6.centos.7.x86_64を指していることを確認します。そして、システムにはそのようなパッケージはありません。


この時点で、基本的に次のように判断できます。「distroverpkgはパッケージcentos-releaseを設定します」


問題を解く:

centos-releaseパッケージは現在のシステムにインストールされていないため、yum installは常に404ですが、centos-releaseパッケージをインストールするには、yumソース構成ファイルのシステムバージョン番号変数$ releaseverを一時的に手動で6に変更します。このように、yumのインストール中に404は表示されません。centos-releaseが正常にインストールされたら、$ releaseverに戻します。


スキル

エディターは、トラブルシューティングに役立つヒントをいくつか投稿し、それらを共有します。

1. / usr / bin / python -c'import yum、pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar、width = 1) ' #このPythonコマンドは、yum内の変数を表示します通常の状況では、次の情報が倉庫割り当て状況に表示されます。{'Arch': 'IA32E'、
 'basearch': 'x86_64'、
 'releasever': '。6'、
 'UUID': '89949ccb-38ce-4dcf- 8ed1-bab80f515481 '}
2. yum whatprovides centos-release 
#このyumコマンドは、以下に示すように、centos-releaseの完全な依存関係を表示し
ます。

centos-release-6-6.el6.centos.12.2.x86_64:CentOSリリースファイルリポジトリ
:base-6.6
一致元:


centos-release-6-2.el6.centos.7.x86_64:CentOSリリースファイルリポジトリ:
インストール済み
一致元:
その他:提供-一致:centos-release


総括する

運用および保守エンジニアの基本スキルとして、Yumコマンドを柔軟に習得する必要がありますチームのシニアドライバーは、「運用および保守エンジニアとして、yumコマンドとrpmパッケージについて十分に理解していない場合、有能なエンジニアではありません」とよく言いました。


おすすめ

転載: blog.51cto.com/15127564/2668144