Weboldal keresés

Hogyan lehet újraépíteni a sérült RPM-adatbázist a CentOS-ben


Az RPM adatbázis a /var/lib/rpm/ könyvtárban található fájlokból áll a CentOS és más vállalati Linux disztribúciók, például a >RHEL, openSUSE, Oracle Linux és még sok más.

Ha az RPM adatbázis sérült, az RPM nem fog megfelelően működni, így a frissítések nem alkalmazhatók a rendszeren, hibákat tapasztal a csomagok YUM csomagkezelőn keresztüli frissítése közben. A legrosszabb forgatókönyv az, ha nem tud sikeresen futtatni egyetlen rpm és yum parancsot sem.

Olvassa el még: 20 gyakorlati példa az RPM parancsra Linuxban

Számos tényező vezethet az RPM-adatbázis megsérüléséhez, például a korábbi tranzakciók befejezetlensége, bizonyos harmadik féltől származó szoftverek telepítése, bizonyos csomagok eltávolítása és még sok más.

Ebben a cikkben bemutatjuk, hogyan lehet újraépíteni egy sérült RPM-adatbázist; így helyreállíthatja az RPM-adatbázis sérülését a CentOS-ben. Ehhez root felhasználói jogosultságokra van szükség, ellenkező esetben használja a sudo parancsot a jogosultságok megszerzéséhez.

A sérült RPM-adatbázis újraépítése a CentOS-ben

Először is készítsen biztonsági másolatot jelenlegi RPM-adatbázisáról, mielőtt folytatná (a jövőben szüksége lehet rá), a következő parancsok használatával.

mkdir /backups/
tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

Ezután ellenőrizze a főcsomag metaadatfájljának /var/lib/rpm/Packages integritását; ez az a fájl, amelyet újra kell építeni, de először távolítsa el a /var/lib/rpm/__db* fájlokat, hogy megelőzze az elavult zárolásokat a következő parancsokkal.

rm -f /var/lib/rpm/__db*		
/usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

Abban az esetben, ha a fenti művelet sikertelen, vagyis továbbra is hibákat tapasztal, akkor ki kell mentenie és betöltenie kell egy új adatbázist. Az alábbiak szerint ellenőrizze a frissen betöltött csomagok fájl integritását is.


cd /var/lib/rpm/
mv Packages Packages.back
/usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
/usr/lib/rpm/rpmdb_verify Packages

Most az adatbázis fejléceinek ellenőrzéséhez kérdezze le az összes telepített csomagot a -q és -a jelzők használatával, és próbálja meg figyelmesen megfigyelni a címre küldött hibákat. stderrort.


rpm -qa >/dev/null	#output is discarded to enable printing of errors only

Végül, de nem utolsósorban építse újra az RPM-adatbázist a következő paranccsal, a -vv opció lehetővé teszi sok hibakeresési információ megjelenítését.

rpm -vv --rebuilddb

Használja a dcrpm eszközt az RPM-adatbázis észleléséhez és javításához

Felfedeztük a dcrpm (rpm észlelése és kijavítása) parancssori eszközt is, amely az RPM-adatbázis sérülésével kapcsolatos, jól ismert problémák azonosítására és kijavítására szolgál. Ez egy egyszerű és könnyen használható eszköz, amely opció nélkül futtatható. A hatékony és megbízható használat érdekében rendszeresen futtassa a cron segítségével.

Telepítheti a forrásból; töltse le a forrásfát, és telepítse a setup.py segítségével (amelynek meg kell ragadnia a psutil függőséget a pypi-től is), az ábra szerint.

git clone https://github.com/facebookincubator/dcrpm.git
cd dcrpm
python setup.py install

A dcrpm telepítése után futtassa az ábrán látható módon.

dcrpm

Végül próbálja meg újra futtatni a sikertelen rpm vagy yum parancsot, hogy ellenőrizze, minden jól működik-e.

dcrpm Github adattár: https://github.com/facebookincubator/dcrpm
További információt az RPM adatbázis-helyreállítási oldalon talál.

Ez minden! Ebben a cikkben elmagyaráztuk, hogyan lehet újraépíteni egy sérült RPM-adatbázist a CentOS rendszerben. Ha kérdéseit szeretné feltenni, vagy megoszthatja gondolatait ezzel az útmutatóval kapcsolatban, használja az alábbi visszajelzési űrlapot.