UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

RedHatでRPMデータベースの再構築

RedHatでRPMデータベースの再構築


0.改訂履歴

  • 2006.03.24 新規作成

1.はじめに

 このドキュメントでは,RedHat上で稼働しているパッケージ管理システムRPMデータベース修復手順を説明する. rpmのデータベースは,結構簡単に壊れてしまう. データベースファイルを削除し,再構築を実施する.

 なお,使用しているOSは,RedHat Linux ES3上で稼働している.

2.rpmがおかしい

  • rpmコマンドを実行するが,反応が無くなる.
[root@artemis shinnai]# rpm -qa | grep -i mysql

[1]+  Stopped                 rpm -qa | grep -i mysql
[root@artemis shinnai]
  • プロセスを確認する.
[root@artemis shinnai]# ps -ef | grep rpm
root     19884 19849  0 14:34 pts/1    00:00:00 /usr/lib/rpm/rpmq -q --all
root     19905 19849  0 14:56 pts/1    00:00:00 grep rpm
[root@artemis shinnai]#
  • 3分以上待っても状態が変わらない場合は,RPMのデータベースが壊れていることによる問題といえる.
  • この場合,待っていても進まないので,プロセスを殺す.
[root@artemis shinnai]# kill 19884
[root@artemis shinnai]# ps -ef | grep rpm
root     19884 19849  0 14:34 pts/1    00:00:00 /usr/lib/rpm/rpmq -q --all
root     19907 19849  0 14:56 pts/1    00:00:00 grep rpm
[root@artemis shinnai]#
  • 普通に停止しても変わらないので,-9で強制終了させる.
[root@artemis shinnai]# kill -9 19884
[root@artemis shinnai]# ps -ef | grep rpm
root     19912 19849  0 14:56 pts/1    00:00:00 grep rpm
[root@artemis shinnai]#
  • 終了した.

2.rpmのデータベースを修復

  • rpmのデータベースを確認する.
  • まず,ディレクトリを移動する.
[root@artemis shinnai]# cd /var/lib/rpm
[root@artemis rpm]#
  • ファイルを確認する.
[root@artemis rpm]# ls -la
合計 63684
drwxr-xr-x    2 rpm      rpm          4096 11月  7 22:13 .
drwxr-xr-x   28 root     root         4096  3月 24 14:58 ..
-rw-r--r--    1 rpm      rpm      10498048  3月 24 13:07 Basenames
-rw-r--r--    1 rpm      rpm         12288 11月  8 15:38 Conflictname
-rw-r--r--    1 rpm      rpm       1564672 11月  8 15:38 Dirnames
-rw-r--r--    1 rpm      rpm      10518528 11月  8 15:38 Filemd5s
-rw-r--r--    1 rpm      rpm         24576 11月  8 15:38 Group
-rw-r--r--    1 rpm      rpm         20480 11月  8 15:38 Installtid
-rw-r--r--    1 rpm      rpm         45056  3月 24 13:07 Name
-rw-r--r--    1 rpm      rpm      44888064  3月 24 13:07 Packages
-rw-r--r--    1 rpm      rpm        339968 11月  8 15:38 Providename
-rw-r--r--    1 rpm      rpm         81920 11月  8 15:38 Provideversion
-rw-r--r--    1 rpm      rpm         12288 11月  1 20:15 Pubkeys
-rw-r--r--    1 rpm      rpm        368640 11月  8 15:38 Requirename
-rw-r--r--    1 rpm      rpm        172032 11月  8 15:38 Requireversion
-rw-r--r--    1 rpm      rpm         94208 11月  8 15:38 Sha1header
-rw-r--r--    1 rpm      rpm         81920 11月  8 15:38 Sigmd5
-rw-r--r--    1 rpm      rpm         12288 11月  8 15:38 Triggername
-rw-r--r--    1 root     root        16384 11月  7 22:13 __db.001
-rw-r--r--    1 root     root      1318912 11月  7 22:13 __db.002
-rw-r--r--    1 root     root       458752 11月  7 22:13 __db.003
[root@artemis rpm]#
  • このアンダバーが銭湯に着いているのがデータベースファイルである.
  • データベースファイルを,退避する.
[root@artemis rpm]# mv __db* /tmp/.
[root@artemis rpm]#
  • 再構築のコマンドを実行する.
[root@artemis rpm]# rpm --rebuilddb 
[root@artemis rpm]#
  • 正しく動作するか,確認する.
[root@artemis rpm]# rpm -qa | grep -i mysql
mysql-bench-3.23.58-1
php-mysql-4.3.2-8.ent
perl-DBD-MySQL-2.1021-3
mysql-3.23.58-1
mysql-devel-3.23.58-1
libdbi-dbd-mysql-0.6.5-5
qt-MySQL-3.1.2-13
mod_auth_mysql-20030510-1.ent
MySQL-python-0.9.1-6
[root@artemis rpm]#
  • これで終了.


広告スペース
Google