RedHatでRPMデータベースの再構築
RedHatでRPMデータベースの再構築
0.改訂履歴
1.はじめに
このドキュメントでは,RedHat上で稼働しているパッケージ管理システムRPMデータベース修復手順を説明する. rpmのデータベースは,結構簡単に壊れてしまう. データベースファイルを削除し,再構築を実施する.
なお,使用しているOSは,RedHat Linux ES3上で稼働している.
2.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]#
|