यम त्रुटि: rpmdb खुली विफल रही


42

मैं चलाने की कोशिश कर रहा हूं yum updateऔर मैं यह त्रुटि चला रहा हूं:

rpmdb: PANIC: fatal region error detected; run recovery
error: db3 error(-30974) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db3 - (-30974)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed

मैंने इस तरह से पेज चेक किया लेकिन रनिंग एक yum clean allही त्रुटि है।

इसे कैसे हल किया जा सकता है?

जवाबों:


84

इस तरह मैंने अपनी समस्या को ठीक किया।

यह काफी गड़बड़ स्थिति है। आप rpm डेटाबेस को साफ करके इसे ठीक कर सकते हैं। जोखिम को कम करने के लिए, कमांड /var/lib/rpm/का उपयोग करके फ़ाइलों का बैकअप बनाएं cp:

mkdir /root/backups.rpm.mm_dd_yyyy/
cp -avr /var/lib/rpm/ /root/backups.rpm.mm_dd_yyyy/

इस समस्या को ठीक करने के लिए, प्रयास करें:

# rm -f /var/lib/rpm/__db*
# db_verify /var/lib/rpm/Packages
# rpm --rebuilddb
# yum clean all

सत्यापित करें कि त्रुटि निम्न yum कमांड के साथ चली गई है

# yum update

यह समाधान yum के बजाय dnf के साथ भी काम करता है।
अनहमर

मुझे यह सब करने के बाद "अधूरा लेन-देन शेष है।", और समस्या को पैदा करने वाले टूटे हुए पैकेजों को भविष्य के किसी भी इंस्टॉलेशन को ब्लॉक करना जारी है। उस मामले के लिए, अंतिम-उपयोगकर्ता को इनमें से कोई भी देखने / करने की आवश्यकता क्यों होगी? यदि yum-db में कोई समस्या है, तो इसे अपने आप ही साफ़ / ठीक करना चाहिए - अधिकांश ay / n प्रॉम्प्ट पर जो एक os-tinkerer से बाहर निकलने का विकल्प चुन सकता है। मेरे मामले के लिए फिक्स मिला - उपरोक्त कार्य करें, फिर "यम-
कम्पलीट

8
सिर्फ क्यों नहीं cd /var/lib/rpm; db_recover? ज्यादातर मामलों में यह एक परमाणु विकल्प के बहुत कम है।
क्रेग रिंगर

3
मैं sudo rpm --rebuilddbअकेला ही अपने मामले को हल करता हूं। फिर भी हमेशा /var/lib/rpmसुरक्षित के लिए बैकअप ।
आलिक

उन लोगों के लिए जो अभी भी yum इंस्टॉल पर मारे गए संदेश को देखते हैं, बस अपने सर्वर को पुनरारंभ करें। हां, यह इस काम की तरह कुछ बुनियादी पाने के लिए फिर से शुरू करने के लिए बेकार है, लेकिन यह केवल एक चीज थी जो मेरे लिए काम करती थी।
निर्मल

0

धन्यवाद एलेक्स, आपके जवाब ने मेरे लिए एक मामूली बदलाव के अलावा काम किया जो मुझे करना था।

rm -f /var/lib/rpm/__db*

त्रुटियों को लौटाया

rm: cannot remove `/var/lib/rpm/__db.001': Is a directory
rm: cannot remove `/var/lib/rpm/__db.002': Is a directory
rm: cannot remove `/var/lib/rpm/__db.004': Is a directory

इसलिए मुझे इससे उबरना पड़ा

rm -rf /var/lib/rpm/__db*

2
वे निर्देशिका नहीं होनी चाहिए। यदि आप उसे देखते हैं, तो आप fsckयह सुनिश्चित करने के लिए अपने विभाजन पर भाग सकते हैं कि आपके पास फ़ाइल भ्रष्टाचार नहीं है।
docwhat

0

मैंने ऊपर एक कोशिश की यह काम नहीं किया

नीचे ठीक काम करता है

# cd /var/lib
# tar -zcvf /var/preserve/rpmdb-$(date +%Y-%m-%d_%H-%M-%S).tar.gz rpm

नोट: RPM डेटाबेस को पुनर्प्राप्त करने के प्रयास में समस्या होने पर इस टार बैकअप का उपयोग किया जा सकता है।

संकुल फ़ाइल की अखंडता सत्यापित करें:

# cd /var/lib/rpm
# rm -f __db*      # to avoid stale locks
# /usr/lib/rpm/rpmdb_verify Packages

# mv Packages Packages.orig
# /usr/lib/rpm/rpmdb_dump Packages.orig | /usr/lib/rpm/rpmdb_load Packages


# rpm -vv --rebuilddb

एक बार फिर RPM डेटाबेस को सत्यापित करें:

# cd /var/lib/rpm
# /usr/lib/rpm/rpmdb_verify Packages

0

मुझे केवल ".lock" एक्सटेंशन के साथ दो फ़ाइल को हटाना था, और तीन फाइलें जो "__db" से शुरू हुई थीं।

# rm /var/lib/rpm/.dbenv.lock
# rm /var/lib/rpm/.rpm.lock
# rm /var/lib/rpm/__db*

उसके बाद yum updateकाम किया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.