ວິທີການສ້າງຖານຂໍ້ມູນທີ່ເສຍຫາຍຂອງ RPM ໃນ CentOS


ຖານຂໍ້ມູນ RPM ແມ່ນປະກອບດ້ວຍແຟ້ມພາຍໃຕ້ລະບົບ/var/lib/rpm/ໃນ CentOS ແລະການແຈກຈ່າຍ Linux ຂອງວິສາຫະກິດອື່ນໆເຊັ່ນ RHEL, openSUSE, Oracle Linux ແລະອື່ນໆ.

ຖ້າຖານຂໍ້ມູນ RPM ເສຍຫາຍ, RPM ຈະບໍ່ເຮັດວຽກຢ່າງຖືກຕ້ອງ, ດັ່ງນັ້ນການປັບປຸງບໍ່ສາມາດ ນຳ ໃຊ້ກັບລະບົບຂອງທ່ານ, ທ່ານພົບຂໍ້ຜິດພາດໃນຂະນະທີ່ ກຳ ລັງປັບປຸງແພັກເກັດໃນລະບົບຂອງທ່ານຜ່ານ ຄຳ ສັ່ງ rpm ແລະ yum ຢ່າງ ສຳ ເລັດຜົນ.

ມີຫລາຍໆປັດໃຈທີ່ສາມາດ ນຳ ໄປສູ່ການສໍ້ລາດບັງຫຼວງຂອງຖານຂໍ້ມູນ RPM, ເຊັ່ນວ່າການເຮັດທຸລະ ກຳ ກ່ອນ ໜ້າ ນີ້ບໍ່ຄົບຖ້ວນ, ການຕິດຕັ້ງໂປແກຼມຂອງພາກສ່ວນທີສາມ, ການ ກຳ ຈັດຊຸດສະເພາະແລະອື່ນໆ.

ໃນບົດຂຽນນີ້, ພວກເຮົາຈະສະແດງວິທີການສ້າງຖານຂໍ້ມູນ RPM ທີ່ເສຍຫາຍ; ວິທີນີ້ທ່ານສາມາດຟື້ນຕົວຈາກການສໍ້ລາດບັງຫຼວງຂອງຖານຂໍ້ມູນ RPM ໃນ CentOS. ນີ້ຮຽກຮ້ອງສິດທິພິເສດຂອງຜູ້ໃຊ້ຮາກ, ຖ້າບໍ່ດັ່ງນັ້ນ, ໃຊ້ ຄຳ ສັ່ງ sudo ເພື່ອໄດ້ຮັບສິດທິພິເສດເຫລົ່ານັ້ນ.

ສ້າງຖານຂໍ້ມູນ RPM ທີ່ເສຍຫາຍໃນ CentOS

ເລີ່ມຕົ້ນໂດຍການ ສຳ ຮອງຖານຂໍ້ມູນ RPM ໃນປະຈຸບັນຂອງທ່ານກ່ອນທີ່ຈະ ດຳ ເນີນການ (ທ່ານອາດຈະຕ້ອງການມັນໃນອະນາຄົດ), ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

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

ຕໍ່ໄປ, ກວດສອບຄວາມສົມບູນຂອງເອກະສານຂໍ້ມູນ metadata ຂອງຊຸດ master/var/lib/rpm/ການຫຸ້ມຫໍ່; ນີ້ແມ່ນເອກະສານທີ່ຕ້ອງການສ້າງ ໃໝ່, ແຕ່ ທຳ ອິດຕ້ອງເອົາແຟ້ມເອກະສານ/var/lib/rpm/__ db * ເພື່ອປ້ອງກັນການລັອກ stale ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້.

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

ໃນກໍລະນີທີ່ການປະຕິບັດງານຂ້າງເທິງລົ້ມເຫລວ, ໝາຍ ຄວາມວ່າທ່ານຍັງພົບຂໍ້ຜິດພາດ, ຫຼັງຈາກນັ້ນທ່ານຄວນຖີ້ມແລະໂຫລດຖານຂໍ້ມູນ ໃໝ່. ພ້ອມທັງກວດສອບຄວາມສົມບູນຂອງແຟ້ມ Packages ທີ່ໂຫຼດ ໃໝ່ໆ ດັ່ງຕໍ່ໄປນີ້.

# 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

ດຽວນີ້ເພື່ອກວດກາຫົວຂໍ້ຖານຂໍ້ມູນ, ສອບຖາມທຸກຊຸດທີ່ຕິດຕັ້ງໂດຍໃຊ້ -q ແລະ -a ທຸງ, ແລະພະຍາຍາມສັງເກດເບິ່ງຂໍ້ຜິດພາດທີ່ຖືກສົ່ງໄປ stderror ຢ່າງລະມັດລະວັງ.

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

ສຸດທ້າຍ, ສ້າງຖານຂໍ້ມູນ RPM ຄືນ ໃໝ່ ໂດຍໃຊ້ ຄຳ ສັ່ງຕໍ່ໄປນີ້, ຕົວເລືອກ -vv ຊ່ວຍໃຫ້ສະແດງຂໍ້ມູນການແກ້ໄຂຫຼາຍ.

# rpm -vv --rebuilddb

ໃຊ້ dcrpm Tool ເພື່ອກວດແລະແກ້ໄຂຖານຂໍ້ມູນ RPM

ພວກເຮົາຍັງໄດ້ຄົ້ນພົບເຄື່ອງມືສາຍ ຄຳ ສັ່ງ dcrpm (ກວດແລະແກ້ໄຂ rpm) ທີ່ໃຊ້ເພື່ອ ກຳ ນົດແລະແກ້ໄຂບັນຫາທີ່ມີຊື່ສຽງທີ່ກ່ຽວຂ້ອງກັບການສໍ້ລາດບັງຫຼວງຂອງຖານຂໍ້ມູນ RPM. ມັນເປັນເຄື່ອງມືທີ່ງ່າຍດາຍແລະງ່າຍຕໍ່ການໃຊ້ເຊິ່ງທ່ານສາມາດແລ່ນໂດຍບໍ່ມີຕົວເລືອກ. ສໍາລັບການນໍາໃຊ້ທີ່ມີປະສິດຕິພາບແລະເຊື່ອຖືໄດ້, ທ່ານຄວນດໍາເນີນການມັນເປັນປົກກະຕິຜ່ານ cron.

ທ່ານສາມາດຕິດຕັ້ງມັນຈາກແຫຼ່ງ; ດາວນ໌ໂຫລດຕົ້ນໄມ້ທີ່ມາແລະຕິດຕັ້ງມັນໂດຍໃຊ້ setup.py (ເຊິ່ງຄວນຈັບເອົາເພິ່ງພາອາໄສ psutil ຈາກ pypi ເຊັ່ນດຽວກັນ), ດັ່ງທີ່ສະແດງ.

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

ເມື່ອທ່ານໄດ້ຕິດຕັ້ງ dcrpm ແລ້ວ, ດຳ ເນີນການດັ່ງທີ່ສະແດງໄວ້.

# dcrpm

ສຸດທ້າຍ, ພະຍາຍາມດໍາເນີນການຄໍາສັ່ງ rpm ຫຼື yum ທີ່ລົ້ມເຫລວຂອງທ່ານອີກຄັ້ງເພື່ອເບິ່ງວ່າທຸກຢ່າງເຮັດວຽກໄດ້ດີຫລືບໍ່.

dcrpm ຫໍໄຕ Github: https://github.com/facebookincubator/dcrpm
ທ່ານສາມາດຊອກຫາຂໍ້ມູນເພີ່ມເຕີມຈາກ ໜ້າ ການກູ້ຄືນຂອງຖານຂໍ້ມູນ RPM.

ຫມົດເທົ່ານີ້! ໃນບົດຂຽນນີ້, ພວກເຮົາໄດ້ອະທິບາຍວິທີການສ້າງຖານຂໍ້ມູນ RPM ທີ່ເສີຍຫາຍໃນ CentOS. ເພື່ອຖາມ ຄຳ ຖາມໃດໆຫຼືແບ່ງປັນຄວາມຄິດຂອງທ່ານກ່ຽວກັບ ຄຳ ແນະ ນຳ ນີ້, ໃຫ້ໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.