rpm損壞處理辦法!

最近物業混蛋的很,公司老無緣無故斷電,搞得機器有邏輯壞道,fsck後損壞不少文件,最明顯的就是rpm用不了。故在修復rpm時,也轉載下修復RPM的辦法。

如果用rpm -e --nodeps rpm 刪除了rpm命令可以用以下方法修復

rpm相關文件下載:1./bin/rpm:binrpm.zip     2./usr/lib/下的so文件:Linux/usr-lib.rar    3./usr/lib/rpm文件夾:backusrlibrpm.zip

一、把binrpm.zip下的文件解壓到/bin目錄下,linux終端下輸入rpm命令,出現以下情況爲存在此命令。

[root@localhost home]# rpm
RPM version 4.2
Copyright (C) 1998-2002 - Red Hat, Inc.
This program may be freely redistributed under the terms of the GNU GPL

Usage: rpm [-aKfgpqV] [-aKfgpqVcdils] [-aKfgpqVcdilsaKfgpqV] [-aKfgpqVcdilsaKfgpqV] [-aKfgpqVcdilsaKfgpqVK] [-aKfgpqVcdilsaKfgpqVK] [-aKfgpqVcdilsaKfgpqVKi] [-aKfgpqVcdilsaKfgpqVKiv] [-aKfgpqVcdilsaKfgpqVKiv] [-aKfgpqVcdilsaKfgpqVKiv?] [-a|--all] [-f|--file] [-g|--group]
[-p|--package] [--specfile] [--whatrequires] [--whatprovides]
[-c|--configfiles] [-d|--docfiles] [--dump] [-l|--list]
[--queryformat=QUERYFORMAT] [-s|--state] [--nomd5] [--nofiles]
[--nodeps] [--noscript] [--addsign] [-K|--checksig] [--import]
[--resign] [--nodigest] [--nosignature] [--initdb] [--rebuilddb]
[--aid] [--allfiles] [--allmatches] [--badreloc]
[-e|--erase <package>+] [--excludedocs] [--excludepath=<path>]
[--force] [-F|--freshen <packagefile>+] [-h|--hash] [--ignorearch]
[--ignoreos] [--ignoresize] [-i|--install] [--justdb] [--nodeps]
[--nomd5] [--noorder] [--nosuggest] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix=<dir>] [--relocate=<old>=<new>]
[--repackage] [--replacefiles] [--replacepkgs] [--test]
[-U|--upgrade <packagefile>+] [-D|--define 'MACRO EXPR']
[-E|--eval 'EXPR'] [--macros=<FILE:...>] [--nodigest] [--nosignature]
[--rcfile=<FILE:...>] [-r|--root ROOT] [--querytags] [--showrc]
[--quiet] [-v|--verbose] [--version] [-?|--help] [--usage]
[--scripts] [--setperms] [--setugids] [--conflicts] [--obsoletes]
[--provides] [--requires] [--info] [--changelog] [--triggers]
[--last] [--filesbypkg] [--fileclass] [--filecolor] [--fileprovide]
[--filerequire] [--redhatprovides] [--redhatrequires]
[--buildpolicy=<policy>] [--with=<option>] [--without=<option>]
[root@localhost home]#

如果出現以下類似錯誤:需要進行第二步驟

rpm: error while loading shared libraries: librpm-4.4.so: cannot open

shared object file: No such file or directory

二、把usr-lib.rar解壓到./usr/lib/下,

使用[root@localhost home]#rpm -qa,檢查某個rpm是否安裝,如果出現

error: cannot open Packages database in /var/lib/rpm

no packages

使用[root@localhost home]#rpm --rebuilddb,修復rpm數據庫(參考本文最後部分) ,如果出現

error: unrecognized db option: “db3″ ignored.

error: cannot open Packages index

出現以上情況,說明文件沒有copy完,進行第三步驟

三、把backusrlibrpm.zip解壓到./usr/lib/下,並確保rpmpopt-4.1,rpmi,rpmv等文件的存在。

再次運行rpm安裝文件時報錯:

rpmdb: unable to join the environment  
error: db4 error(11) from dbenv->open: Resource temporarily unavailable  
error: cannot open Packages index using db3 - Resource temporarily unavailable (11)  
error: cannot open Packages database in /var/lib/rpm  
no packages

解決方法一:是執行“export LD_ASSUME_KERNEL =2.2.25”或“export LD_ASSUME_KERNEL =2.2.25”命令,也可以將其寫入/etc/bashrc。

解決方法二:是執行“export LD_ASSUME_KERNEL =2.2.25”或“export LD_ASSUME_KERNEL =2.2.25”命令,升級rpm到rpm-4.2-1.i386.rpm

解決方法三:是執行“export LD_ASSUME_KERNEL=2.2.5”

////////////////////////////////////////////////////////////////////////////////////////

修復rpm數據庫                                      
有的時候,我們的rpm的數據庫會因爲某些原因損壞,這樣當你執行rpm的相關命令的時候就會報類似下面的錯誤:
rpmdb: fatal region error detected; run recoveryerror: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recoveryerror: cannot open Packages index
這樣的後果是你將不能使用rpm來添加刪除,更新查詢你係統的RPM軟件包了,其實只要按照下面的步驟做就能恢復你的RPM數據庫而不必重新安裝系統
# cd /var/lib# mv rpm rpm.old# mkdir rpm# rpmdb --initdb# cp rpm.old/Packages rpm# rpmdb --rebuilddb
就能了
以上是針對redhat8 和redhat9的做法如果是以前的版本或其他版本的linux
請按照下面的步驟進行
cd /var/lib

mv rpm rpm.old

mkdir rpm

rpm --initdb

cp rpm.old/Packages rpm

rpm --rebuilddb


另一篇
Repair RPM database
當進行包安裝、升級、卸載等操作時,可能損壞RPM DB,這時需要通過--rebuild參數來修復RPM DB,但有時會碰到這樣的問題:
[root@tiv125 lib]# rpm -v --rebuilddb
rpmdb: fatal region error detected; run recovery
error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index
這時需要先手動刪除/var/lib/rpm目錄下的 __db.* 文件,比如 __db.001, __db.002, etc.

mkdir /var/lib/rpm.old

mv /var/lib/rpm/__db.*  /var/lib/rpm.old

rpm -v --rebuilddb

然後再運行 rpm -v --rebuilddb 即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章