CentOS-ൽ കേടായ RPM ഡാറ്റാബേസ് എങ്ങനെ പുനർനിർമ്മിക്കാം


CentOS-ലെ /var/lib/rpm/ ഡയറക്uടറിക്ക് കീഴിലുള്ള ഫയലുകളും RHEL, openSUSE, Oracle Linux തുടങ്ങിയ മറ്റ് എന്റർപ്രൈസ് ലിനക്uസ് വിതരണങ്ങളും കൊണ്ടാണ് RPM ഡാറ്റാബേസ് നിർമ്മിച്ചിരിക്കുന്നത്.

ആർuപിuഎം ഡാറ്റാബേസ് കേടായെങ്കിൽ, ആർuപിuഎം ശരിയായി പ്രവർത്തിക്കില്ല, അതിനാൽ നിങ്ങളുടെ സിസ്റ്റത്തിൽ അപ്uഡേറ്റുകൾ പ്രയോഗിക്കാൻ കഴിയില്ല, ആർuപിuഎം, yum കമാൻഡുകൾ വഴി നിങ്ങളുടെ സിസ്റ്റത്തിലെ പാക്കേജുകൾ വിജയകരമായി അപ്uഡേറ്റ് ചെയ്യുമ്പോൾ നിങ്ങൾക്ക് പിശകുകൾ നേരിടേണ്ടിവരും.

അപൂർണ്ണമായ മുൻ ഇടപാടുകൾ, ചില മൂന്നാം കക്ഷി സോഫ്uറ്റ്uവെയറിന്റെ ഇൻസ്റ്റാളേഷൻ, നിർദ്ദിഷ്ട പാക്കേജുകൾ നീക്കം ചെയ്യൽ തുടങ്ങി നിരവധി ഘടകങ്ങൾ ആർപിഎം ഡാറ്റാബേസ് അഴിമതിയിലേക്ക് നയിച്ചേക്കാം.

ഈ ലേഖനത്തിൽ, കേടായ ഒരു RPM ഡാറ്റാബേസ് എങ്ങനെ പുനർനിർമ്മിക്കാമെന്ന് ഞങ്ങൾ കാണിക്കും; ഇതുവഴി നിങ്ങൾക്ക് CentOS-ലെ ഒരു RPM ഡാറ്റാബേസ് അഴിമതിയിൽ നിന്ന് വീണ്ടെടുക്കാനാകും. ഇതിന് റൂട്ട് യൂസർ പ്രത്യേകാവകാശങ്ങൾ ആവശ്യമാണ്, അല്ലാത്തപക്ഷം, ആ പ്രത്യേകാവകാശങ്ങൾ നേടുന്നതിന് sudo കമാൻഡ് ഉപയോഗിക്കുക.

CentOS-ൽ കേടായ RPM ഡാറ്റാബേസ് പുനർനിർമ്മിക്കുക

ഇനിപ്പറയുന്ന കമാൻഡുകൾ ഉപയോഗിച്ച് മുന്നോട്ട് പോകുന്നതിന് മുമ്പ് നിങ്ങളുടെ നിലവിലെ RPM ഡാറ്റാബേസ് ബാക്കപ്പ് ചെയ്തുകൊണ്ട് ആദ്യം ആരംഭിക്കുക (ഭാവിയിൽ നിങ്ങൾക്കത് ആവശ്യമായി വന്നേക്കാം).

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

അടുത്തതായി, മാസ്റ്റർ പാക്കേജ് മെറ്റാഡാറ്റ ഫയൽ /var/lib/rpm/Packages-ന്റെ സമഗ്രത പരിശോധിക്കുക; പുനർനിർമ്മാണം ആവശ്യമുള്ള ഫയലാണിത്, എന്നാൽ താഴെ പറയുന്ന കമാൻഡുകൾ ഉപയോഗിച്ച് പഴകിയ ലോക്കുകൾ തടയുന്നതിന് ആദ്യം /var/lib/rpm/__db* ഫയലുകൾ നീക്കം ചെയ്യുക.

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

മുകളിലുള്ള പ്രവർത്തനം പരാജയപ്പെടുകയാണെങ്കിൽ, നിങ്ങൾ ഇപ്പോഴും പിശകുകൾ നേരിടുന്നു എന്നർത്ഥം, നിങ്ങൾ ഒരു പുതിയ ഡാറ്റാബേസ് ഡംപ് ചെയ്ത് ലോഡ് ചെയ്യണം. പുതുതായി ലോഡുചെയ്uത പാക്കേജുകളുടെ ഫയലിന്റെ സമഗ്രത ഇനിപ്പറയുന്ന രീതിയിൽ പരിശോധിക്കുക.

# 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

RPM ഡാറ്റാബേസ് കണ്ടെത്താനും ശരിയാക്കാനും dcrpm ടൂൾ ഉപയോഗിക്കുക

ആർuപിuഎം ഡാറ്റാബേസ് അഴിമതിയുമായി ബന്ധപ്പെട്ട് അറിയപ്പെടുന്ന പ്രശ്uനങ്ങൾ തിരിച്ചറിയുന്നതിനും ശരിയാക്കുന്നതിനും ഉപയോഗിക്കുന്ന ഡിuസിuആർuപിuഎം (ആർuപിuഎം കണ്ടെത്തി ശരിയാക്കുക) കമാൻഡ് ലൈൻ ടൂളും ഞങ്ങൾ കണ്ടെത്തി. നിങ്ങൾക്ക് ഓപ്ഷൻ കൂടാതെ പ്രവർത്തിപ്പിക്കാവുന്ന ലളിതവും ഉപയോഗിക്കാൻ എളുപ്പമുള്ളതുമായ ഉപകരണമാണിത്. ഫലപ്രദവും വിശ്വസനീയവുമായ ഉപയോഗത്തിന്, നിങ്ങൾ ഇത് പതിവായി ക്രോൺ വഴി പ്രവർത്തിപ്പിക്കണം.

നിങ്ങൾക്ക് ഇത് ഉറവിടത്തിൽ നിന്ന് ഇൻസ്റ്റാൾ ചെയ്യാൻ കഴിയും; സോഴ്സ് ട്രീ ഡൗൺലോഡ് ചെയ്ത് setup.py ഉപയോഗിച്ച് ഇൻസ്റ്റാൾ ചെയ്യുക (അത് pypi-ൽ നിന്നും psutil ഡിപൻഡൻസി പിടിച്ചെടുക്കണം), കാണിച്ചിരിക്കുന്നത് പോലെ.

# 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 ഡാറ്റാബേസ് വീണ്ടെടുക്കൽ പേജിൽ നിന്ന് നിങ്ങൾക്ക് കൂടുതൽ വിവരങ്ങൾ കണ്ടെത്താനാകും.

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, CentOS-ൽ കേടായ RPM ഡാറ്റാബേസ് എങ്ങനെ പുനർനിർമ്മിക്കാമെന്ന് ഞങ്ങൾ വിശദീകരിച്ചിട്ടുണ്ട്. ഈ ഗൈഡിനെക്കുറിച്ച് എന്തെങ്കിലും ചോദ്യങ്ങൾ ചോദിക്കുന്നതിനോ നിങ്ങളുടെ ചിന്തകൾ പങ്കിടുന്നതിനോ, ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം ഉപയോഗിക്കുക.