Bii o ṣe le Tun data RPM ti Ibajẹ bajẹ ni CentOS


Ibi ipamọ data RPM jẹ awọn faili labẹ/var/lib/rpm/itọsọna ni CentOS ati awọn pinpin kaakiri ile-iṣẹ miiran ti Linux gẹgẹbi RHEL, openSUSE, Oracle Linux ati diẹ sii.

Ti ibi ipamọ data RPM ba jẹ ibajẹ, RPM kii yoo ṣiṣẹ ni deede, nitorinaa awọn imudojuiwọn ko le ṣee lo si eto rẹ, o ba awọn aṣiṣe pade lakoko ti o n mu awọn idii dojuiwọn lori ẹrọ rẹ nipasẹ rpm ati awọn aṣẹ yum ni aṣeyọri.

Awọn ifosiwewe pupọ lo wa ti o le ja si ibajẹ ibi ipamọ data RPM, gẹgẹbi awọn iṣowo tẹlẹ ti ko pe, fifi sori ẹrọ ti sọfitiwia ẹnikẹta kan, yiyọ awọn idii kan pato, ati ọpọlọpọ awọn omiiran.

Ninu àpilẹkọ yii, a yoo fihan bi a ṣe le tun ṣe ibi data RPM ti o bajẹ; ni ọna yii o le bọsipọ lati ibajẹ ibi ipamọ data RPM ni CentOS. Eyi nilo awọn anfaani olumulo root, bibẹkọ, lo aṣẹ sudo lati jere awọn anfani wọnyẹn.

Tun ipilẹ data RPM ti o bajẹ ni CentOS ṣe

Akọkọ bẹrẹ nipa fifipamọ data RPM lọwọlọwọ rẹ ṣaaju tẹsiwaju (o le nilo rẹ ni ọjọ iwaju), ni lilo awọn ofin wọnyi.

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

Itele, jẹrisi iduroṣinṣin ti faili metadata package oluwa/var/lib/rpm/Awọn idii; eyi ni faili ti o nilo atunkọ, ṣugbọn akọkọ yọ/var/lib/rpm/__ db * awọn faili lati ṣe idiwọ awọn titiipa stale ni lilo awọn ofin wọnyi.

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

Ni ọran ti iṣẹ ti o wa loke ba kuna, itumo o tun ba awọn aṣiṣe pade, lẹhinna o yẹ ki o da silẹ ki o fifuye data tuntun kan. Tun rii daju iduroṣinṣin ti faili Awọn apoti ti kojọpọ tuntun bi atẹle.

# 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

Bayi lati ṣayẹwo awọn akọle ibi ipamọ data, beere gbogbo awọn idii ti a fi sori ẹrọ ni lilo awọn asia -q ati -a , ki o gbiyanju lati farabalẹ kiyesi eyikeyi aṣiṣe (s) ti a firanṣẹ si stderror.

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

Kẹhin ṣugbọn kii kere ju, tun tun ṣe ipilẹ data RPM nipa lilo pipaṣẹ atẹle, aṣayan -vv gba laaye fun fifihan ọpọlọpọ alaye n ṣatunṣe aṣiṣe.

# rpm -vv --rebuilddb

Lo Ọpa dcrpm lati Ṣawari ati Ṣatunṣe aaye data RPM

A tun ṣe awari dcrpm (ri ati ṣatunṣe rpm) ọpa laini aṣẹ ti a lo lati ṣe idanimọ ati ṣatunṣe awọn ọran ti o mọ daradara lati ṣe pẹlu ibajẹ data RPM. O jẹ ohun elo ti o rọrun ati irọrun lati lo eyiti o le ṣiṣẹ laisi aṣayan. Fun lilo ti o munadoko ati igbẹkẹle, o yẹ ki o ṣiṣe ni deede nipasẹ cron.

O le fi sii lati orisun; ṣe igbasilẹ igi orisun ki o fi sii nipa lilo setup.py (eyiti o yẹ ki o gba igbẹkẹle psutil lati pypi pẹlu), bi a ṣe han.

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

Lọgan ti o ba ti fi sii dcrpm, ṣiṣe bi o ti han.

# dcrpm

Lakotan, gbiyanju lati ṣiṣẹ rpm ti o kuna tabi aṣẹ yum lẹẹkansii lati rii boya ohun gbogbo n ṣiṣẹ daradara.

ibi ipamọ Github dcrpm: https://github.com/facebookincubator/dcrpm
O le wa alaye diẹ sii lati oju-iwe imularada ibi ipamọ data RPM.

Gbogbo ẹ niyẹn! Ninu nkan yii, a ti ṣalaye bawo ni a ṣe le tun ṣe ibi data RPM ti o bajẹ ni CentOS. Lati beere eyikeyi ibeere tabi pin awọn ero rẹ nipa itọsọna yii, lo fọọmu esi ni isalẹ.