Jinsi ya kuunda tena Hifadhidata Iliyoharibika ya RPM katika CentOS


Hifadhidata ya RPM inaundwa na faili zilizo chini ya saraka ya /var/lib/rpm/ katika CentOS na usambazaji wa Linux wa biashara kama vile RHEL, openSUSE, Oracle Linux na zaidi.

Ikiwa hifadhidata ya RPM imepotoshwa, RPM haitafanya kazi ipasavyo, kwa hivyo sasisho haziwezi kutumika kwenye mfumo wako, utapata hitilafu wakati wa kusasisha vifurushi kwenye mfumo wako kupitia rpm na amri za yum kwa mafanikio.

Kuna mambo kadhaa yanayoweza kusababisha uharibifu wa hifadhidata ya RPM, kama vile shughuli za awali zisizokamilika, usakinishaji wa programu fulani za wahusika wengine, kuondoa vifurushi mahususi na vingine vingi.

Katika makala hii, tutaonyesha jinsi ya kujenga upya hifadhidata ya RPM iliyoharibika; kwa njia hii unaweza kupona kutoka kwa ufisadi wa hifadhidata ya RPM katika CentOS. Hii inahitaji upendeleo wa mtumiaji wa mizizi, vinginevyo, tumia sudo amri kupata marupurupu hayo.

Jenga Upya Hifadhidata Iliyoharibika ya RPM katika CentOS

Kwanza anza kwa kucheleza hifadhidata yako ya sasa ya RPM kabla ya kuendelea (unaweza kuihitaji siku zijazo), kwa kutumia amri zifuatazo.

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

Kisha, thibitisha uadilifu wa faili ya metadata ya kifurushi kikuu /var/lib/rpm/Packages; hii ndio faili inayohitaji kujengwa upya, lakini kwanza ondoa /var/lib/rpm/__db* faili ili kuzuia kufuli za zamani kwa kutumia amri zifuatazo.

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

Ikiwa operesheni iliyo hapo juu itashindwa, ikimaanisha kuwa bado unakutana na makosa, basi unapaswa kutupa na kupakia hifadhidata mpya. Pia thibitisha uadilifu wa faili ya Vifurushi vilivyopakiwa upya kama ifuatavyo.

# 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

Sasa ili kuangalia vichwa vya hifadhidata, holi vifurushi vyote vilivyosakinishwa kwa kutumia alama za -q na -a, na ujaribu kuchunguza kwa makini hitilafu zozote zinazotumwa kwa stderror.

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

Mwisho kabisa, jenga upya hifadhidata ya RPM kwa kutumia amri ifuatayo, chaguo la -vv huruhusu kuonyesha taarifa nyingi za utatuzi.

# rpm -vv --rebuilddb

Tumia Zana ya dcrpm Kugundua na Kusahihisha Hifadhidata ya RPM

Pia tuligundua zana ya mstari wa amri ya dcrpm (gundua na kusahihisha rpm) inayotumiwa kutambua na kusahihisha masuala yanayojulikana sana kuhusiana na ufisadi wa hifadhidata ya RPM. Ni zana rahisi na rahisi kutumia ambayo unaweza kukimbia bila chaguo. Kwa matumizi bora na ya kuaminika, unapaswa kuiendesha mara kwa mara kupitia cron.

Unaweza kuiweka kutoka kwa chanzo; pakua mti wa chanzo na uisakinishe kwa kutumia setup.py (ambayo inapaswa kunyakua utegemezi wa psutil kutoka kwa pypi pia), kama inavyoonyeshwa.

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

Mara baada ya kusakinisha dcrpm, iendeshe kama inavyoonyeshwa.

# dcrpm

Mwishowe, jaribu kutekeleza rpm yako iliyoshindwa au amri ya yum tena ili kuona ikiwa kila kitu kinafanya kazi vizuri.

dcrpm Github hazina: https://github.com/facebookincubator/dcrpm
Unaweza kupata maelezo zaidi kutoka kwa ukurasa wa kurejesha hifadhidata ya RPM.

Ni hayo tu! Katika makala hii, tumeelezea jinsi ya kujenga upya hifadhidata ya RPM iliyoharibika katika CentOS. Kuuliza maswali yoyote au kushiriki mawazo yako kuhusu mwongozo huu, tumia fomu ya maoni hapa chini.