CentOS-da zaýalanan RPM maglumat bazasyny nädip täzeden gurmaly


RPM maglumat bazasy CentOS-daky/var/lib/rpm/katalogyndaky faýllardan we RHEL, openSUSE, Oracle Linux we başgalar ýaly Linux Linux paýlamalaryndan durýar.

RPM maglumat bazasy zaýalanan bolsa, RPM dogry işlemez, şeýlelik bilen ulgamyňyza täzelenmeler ulanylyp bilinmez, ulgamyňyzdaky paketleri rpm we yum buýruklary arkaly üstünlikli täzeläniňizde ýalňyşlyklara duçar bolarsyňyz.

RPM maglumat bazasynyň korrupsiýasyna sebäp bolup biljek birnäçe faktorlar bar, meselem, öňki gutarnyksyz amallar, belli bir üçünji tarap programma üpjünçiligini gurmak, aýratyn paketleri aýyrmak we başgalar.

Bu makalada, zaýalanan RPM maglumat bazasyny nädip täzeden gurmalydygyny görkezeris; şeýlelik bilen CentOS-daky RPM maglumat bazasynyň korrupsiýasyndan gutulyp bilersiňiz. Munuň üçin kök ulanyjy hukuklary talap edilýär, ýogsam, bu artykmaçlyklary gazanmak üçin sudo buýrugyny ulanyň.

CentOS-da zaýalanan RPM maglumat bazasyny täzeden guruň

Ilki bilen aşakdaky buýruklary ulanyp, dowam etmezden ozal häzirki RPM maglumat bazasynyň ätiýaçlyk nusgasyndan başlaň (geljekde size gerek bolup biler).

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

Ondan soň, baş paket metadata faýly/var/lib/rpm/Packages-iň bitewiligini barlaň; bu täzeden gurulmaly faýl, ýöne aşakdaky buýruklary ulanyp köne gulplaryň öňüni almak üçin ilki bilen/var/lib/rpm/__ db * faýllary aýyryň.

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

Aboveokardaky amal başa barmasa, ýalňyşlyklar bilen ýüzbe-ýüz bolýan bolsaňyz, täze maglumat bazasyny taşlamaly we ýüklemeli. Şeýle hem täze ýüklenen paketler faýlynyň bütewiligini aşakdaky ýaly barlaň.

# 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

Maglumat bazasynyň sözbaşylaryny barlamak üçin, -q we -a baýdaklaryny ulanyp, gurnalan ähli paketleri soraň we stderror-a iberilen ýalňyşlyklary üns bilen synamaga synanyşyň.

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

Iň soňkusy, aşakdaky buýrugy ulanyp, RPM maglumat bazasyny täzeden guruň, -vv opsiýasy köp sanly düzediş maglumatlary görkezmäge mümkinçilik berýär.

# rpm -vv --rebuilddb

RPM maglumat bazasyny tapmak we düzetmek üçin dcrpm Tool ulanyň

Şeýle hem, RPM maglumatlar bazasynyň korrupsiýasy bilen baglanyşykly belli meseleleri kesgitlemek we düzetmek üçin ulanylýan dcrpm (rpm-i anyklamak we düzetmek) buýruk setiriniň guralyny tapdyk. Bu ýönekeý we ulanmaga aňsat gural, ony saýlamazdan işledip bilersiňiz. Netijeli we ygtybarly ulanmak üçin ony kron arkaly yzygiderli işletmeli.

Çeşmeden gurnap bilersiňiz; Çeşme agajyny göçürip alyň we görkezilişi ýaly setup.py (psutil-den psutil garaşlylygyny hem ele almaly) ulanyp guruň.

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

Dcrpm guranyňyzdan soň, görkezilişi ýaly işlediň.

# dcrpm

Ahyrynda, hemme zadyň gowy işleýändigini ýa-da ýokdugyny bilmek üçin şowsuz rpm ýa-da yum buýrugyny täzeden işletmäge synanyşyň.

dcrpm Github ammary: https://github.com/facebookincubator/dcrpm
RPM maglumat bazasyny dikeltmek sahypasyndan has giňişleýin maglumat tapyp bilersiňiz.

Bu hemmesi! Bu makalada, CentOS-da zaýalanan RPM maglumat bazasyny nädip täzeden gurmalydygyny düşündirdik. Islendik sorag bermek ýa-da bu gollanma baradaky pikirleriňizi paýlaşmak üçin aşakdaky seslenme formasyny ulanyň.