LoginSignup
14
13

More than 5 years have passed since last update.

GHOST対応してたら色々ちゃけた(壊れた)

Last updated at Posted at 2015-02-04

glibc脆弱性(CVE-2015-0235)の対応中にyumがおかしくなったので調査
どちらかと言えばrpmとかがメインの話

yumアップデートに失敗

ログが保存していなかったのでyumのところが無い
 >のあとはコメントです

# yum update glibc
> 失敗

#  rpm -q glibc
glibc-2.12-1.47.el6_2.12.x86_64

# yum clean all
> yumのキャッシュとかクリアしてみる

# yum update glibc 
> glibcが無いと言われる(無かったらそもそも動いてないんじゃね

# rpm -q glibc
パッケージ glibc はインストールされていません。
> だからなかったらry

# yum install glibc
インストール完了
> 何故通ったのかわからない

一度サーバを再起動してみる
再起動後にrpm等の確認を実施

# rpm -q glibc
glibc-2.12-1.149.el6_6.5.x86_64
glibc-2.12-1.149.el6_6.5.x86_64
glibc-2.12-1.149.el6_6.5.x86_64
> 何故かglibcgが3つある

# sudo yum check > yum.log
Error: check all
> yum checkで状況を確認

# cat yum.log
Loaded plugins: fastestmirror
glibc-2.12-1.149.el6_6.5.x86_64 is a duplicate with glibc-2.12-1.149.el6_6.5.x86_64
glibc-2.12-1.149.el6_6.5.x86_64 is a duplicate with glibc-2.12-1.149.el6_6.5.x86_64
glibc-common-2.12-1.149.el6_6.5.x86_64 is a duplicate with glibc-common-2.12-1.149.el6_6.5.x86_64
glibc-common-2.12-1.149.el6_6.5.x86_64 is a duplicate with glibc-common-2.12-1.149.el6_6.5.x86_64
glibc-devel-2.12-1.47.el6_2.12.x86_64 has missing requires of glibc = ('0', '2.12', '1.47.el6_2.12')
glibc-headers-2.12-1.47.el6_2.12.x86_64 has missing requires of glibc = ('0', '2.12', '1.47.el6_2.12')
> めっちゃ重複してるやん・・・

やったらダメなこと

# rpm -e --nodeps --allmatches glibc glibc-common
> これやるとglibcが死ぬのでAWS環境とかだと死ぬ、というか詰む

# yum-complete-transaction
# yum check duplicates | awk '/is a duplicate/ {print $6}' > /tmp/DUPES
# yum remove `cat /tmp/DUPES`
> 他の方のブログにも有りましたが、glibcが死ぬからダメ(依存関係の無いようなパッケージならOK)

解決策

# wget http://yourrepository/glibc-2.12-1.149.el6_6.5.x86_64.rpm
> OS別に使用可能なglibcのrpmを持ってくる

# rpm -e --nodeps --allmatches --justdb glibc
> rpmのdbからglibcの情報を削除する

# rpm -q glibc
パッケージ glibc はインストールされていません。
> dbから削除されたことを確認

# rpm -ivh --justdb glibc-2.12-1.149.el6_6.5.x86_64.rpm
準備中...                ########################################### [100%]
> dbへglibcを追加

# rpm --rebuilddb
> dbの再構築

# rpm -q glibc
glibc-2.12-1.149.el6_6.5.x86_64
> glibcが1個になっているのを確認!!!
 で同じ手順をglibc-commonにも実施

同じ手順なので略

# rpm -qa | grep glibc
glibc-common-2.12-1.149.el6_6.5.x86_64
glibc-headers-2.12-1.47.el6_2.12.x86_64
glibc-devel-2.12-1.47.el6_2.12.x86_64
glibc-2.12-1.149.el6_6.5.x86_64
> 直ったのでこれでOK

ちなみに最初にyumが失敗した時にrpm --rebuildしてたらこんなことにはならなかった

おまけ

glibcを削除してみるとどうなるのか

# rpm -e --nodeps --allmatches glibc glibc-common
警告: /etc/localtime は /etc/localtime.rpmsave として保存されました。
警告: /etc/ld.so.conf は /etc/ld.so.conf.rpmsave として保存されました。
/sbin/ldconfig: 設定ファイル /etc/ld.so.conf を開けません: そのようなファイルやディレクトリはありません
/sbin/ldconfig: 設定ファイル /etc/ld.so.conf を開けません: そのようなファイルやディレクトリはありません
以下略

# rpm -q glibc
-bash: /bin/rpm: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
# yum install glibc glibc-common
-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
> /bin配下とかが使えなくなったcatもrpmもyumもvimも使えないから詰み
 SSHのセッション切ったら接続も出来なくなります

オンプレならCDブートとかから必要なものをインストール出来るんだろうけどAWSだとそういうことが出来ないので修復不可能

以上

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13