जवाबों:
मैं निश्चित रूप से यह नहीं कह सकता कि यह निर्देशिका क्या बनाती है, लेकिन यह संभावना है कि यह या तो तीसरे पक्ष के लिनक्स कर्नेल ड्राइवरों को स्थापित करने के साइड इफेक्ट के रूप में बनाया गया है जैसे कि NVIDIA या वर्चुअलबॉक्स DKK का उपयोग करके , या कुछ अन्य असमर्थित इंस्टॉलर स्क्रिप्ट द्वारा प्रदान नहीं किया गया उबंटू। यह निर्देशिका संभवतः एक स्थापित प्रक्रिया के साइड इफेक्ट के रूप में बनाई गई थी जो आरपीएम-आधारित और डिबेट-आधारित वितरण दोनों का समर्थन करने के लिए होती है। DKMS ऐसी इंस्टॉल स्क्रिप्ट होती है और निश्चित रूप से सही परिस्थितियों में इस डायरेक्टरी को बना सकती है। निर्देशिका को आपके सिस्टम को नुकसान पहुंचाए बिना सुरक्षित रूप से हटाया जा सकता है, लेकिन बाद में अपडेट स्थापित होने पर इसे फिर से बनाया जा सकता है। इस समस्या पर नज़र रखने वाली एक खुली बग रिपोर्ट के लिए बग # 1069350 देखें ।
यह संक्षिप्त उत्तर है, अब कुछ और विवरण।
जैसा कि आप जानते हैं, आरपीएम एक सॉफ्टवेयर पैकेजिंग प्रारूप है जो पैकेजों को स्थापित करने और स्थापित पैकेजों के डेटाबेस और उनकी अन्योन्याश्रितियों को बनाए रखने के लिए उपकरणों का सेट है। इसका उपयोग कई वितरणों द्वारा किया जाता है लेकिन उबंटू और अन्य डिबेट-आधारित वितरणों द्वारा नहीं। दुर्भाग्य से, उबंटू के लिए, हालांकि rpm
कमांड के किसी भी उपयोग के लिए एक वैध "आरपीएमडीबी" डेटाबेस की आवश्यकता है जो मौजूद है या बनाया जा सकता है।
आरपीएम-आधारित वितरण पर यह एक समस्या नहीं है क्योंकि उनके पास परिभाषा द्वारा एक सिस्टम-वाइड आरपीएमडीबी है। उबंटू सिस्टम पर, चूंकि सिस्टम-वाइड आरपीएम डेटाबेस की कोई आवश्यकता नहीं है rpm
, विशेष रूप से प्रत्येक उपयोगकर्ता के घर निर्देशिका के तहत एक डेटाबेस का उपयोग करने के लिए कॉन्फ़िगर किया गया है $HOME/.rpmdb
। जब भी जरूरत होती है यह डेटाबेस चुपचाप बनाया जाता है rpm
। चूंकि यह प्रत्येक उपयोगकर्ता के घर निर्देशिका में है, इसलिए साझा अनुमतियों के साथ कोई समस्या नहीं है या किसी व्यवस्थापक द्वारा डेटाबेस बनाने की आवश्यकता नहीं है। प्रत्येक उपयोगकर्ता को बस अपना निजी खाली आरपीएम डेटाबेस मिलता है।
यह पता चला है कि कुछ परियोजनाएं स्थापित स्क्रिप्ट बनाना पसंद करती हैं जो किसी भी वितरण पर काम करेंगी, चाहे वह वितरण आरपीएम-आधारित हो, डेबिट-आधारित हो, या न हो। डीकेएमएस एक ऐसी परियोजना है, यह तीसरे पक्ष के ड्राइवरों को लिनक्स कर्नेल के लिए जो कुछ भी हो सकता है उसे चलाने की अनुमति देता है, और यह वितरण में काम करने के लिए लिखा जाता है। किस वितरण पर यह चल रहा है और कौन सा कर्नेल संस्करण मौजूद है, यह निर्धारित करने के लिए इसके तर्क के भाग में, यह rpm
डेटाबेस को क्वेरी करने के लिए एक कमांड निष्पादित करता है । जैसा कि मैंने पहले बताया था, यह चुपचाप एक .rpmdb
निर्देशिका बना देगा यदि कोई पहले से ही उपयोगकर्ता के घर निर्देशिका में मौजूद नहीं है। डेटाबेस क्वेरी विफल होनी चाहिए, क्योंकि उबंटू एक आरपीएम-आधारित वितरण नहीं है, और डीकेएमएस जारी है।
यदि आप UbuntuBox से किसी भी अतिरिक्त लिनक्स कर्नेल ड्राइवर पैकेज को स्थापित करते हैं जैसे कि VirtualBox, NVIDIA, ndiswrapper, या Openwan, तो आप शायद अपने ड्राइवर को कर्नेल के लिए स्थापित करने के लिए DKMS का उपयोग कर रहे हैं। यह आमतौर पर स्वचालित रूप से किया जाता है जब ड्राइवर को Ubuntu रिपॉजिटरी से स्थापित किया जाता है। तो किसी भी समय कर्नेल या ड्राइवर अपडेट स्थापित होने पर, सभी उपलब्ध कर्नेल संस्करणों के लिए ड्राइवर को फिर से बनाने के लिए DKMS फिर से चलता है। यह दिखाया गया है कि जब उन पैकेजों को अपडेट किया जाता है, तो /root/.rpmdb
निर्देशिका वास्तव में दिखाई देती है, जो रूट के होम डायरेक्टरी में है क्योंकि अपडेट को स्थापित करने के लिए रूट की आवश्यकता होती है।
मुझे किसी अन्य विशिष्ट तृतीय-पक्ष की स्थापना स्क्रिप्ट rpm
का पता नहीं है जो वितरण प्रकार का पता लगाने के तरीके के रूप में आदेशों को भी निष्पादित कर सकता है , लेकिन यह निश्चित रूप से संभव है। उदाहरण के लिए, आप इनटेक से लार्जपेंट्रीप्रोग्राम को स्थापित करना चाह सकते हैं, और ऐसा करने के लिए आप एक install.sh
स्क्रिप्ट को रूट के रूप में चलाते हैं । यदि आप rpm- आधारित वितरण चला रहे हैं, तो यह स्क्रिप्ट rpm डेटाबेस को क्वेरी करने का प्रयास कर सकती है और /root/.rpmdb
फिर से बनाई गई है।
तो यह बताता है कि आप क्यों देख सकते हैं /home/user/.rpmdb
और /root/.rpmdb
निर्देशिकाएं आपके सिस्टम पर दिखाई देती हैं। लेकिन सिस्टम रूट डायरेक्टरी में क्यों?
इसके लिए सबसे आसान स्पष्टीकरण यह है कि $HOME
पर्यावरण चर किसी न किसी प्रक्रिया के संदर्भ में किसी तरह से परेशान है जो चलता है rpm
। हम तर्क के लिए DKMS का उपयोग करते हैं क्योंकि हम निश्चित रूप से जानते हैं कि यह rpm
कमांड चला सकता है । क्योंकि यह आम तौर पर तब चलता है जब पैकेज स्थापित या अपडेट किए जाते हैं, यह आपके द्वारा उपयोग किए जाने वाले पैकेज मैनेजर के वातावरण में चलता है। यदि आप sudo apt-get
पैकेजों को स्थापित करने के लिए उपयोग करते हैं, तो यह सही हो जाएगा $HOME
। यदि आप PackageKit का उपयोग करते हैं, तो इसके पास एक $HOME
चर नहीं हो सकता है । मुझे यकीन नहीं है कि Synaptic या Ubuntu Software Center द्वारा कौन सा वातावरण प्रदान किया गया है।
इसलिए यदि DKMS ऐसे वातावरण में चल रहा है जिसमें $HOME
चर नहीं है , और जिस तरह से rpm डेटाबेस को परिभाषित किया गया था, उसके /.rpmdb
बजाय एक खाली rpm डेटाबेस बनाया जाएगा /root/.rpmdb
। यह rpm
14.10 विकास संस्करण में उबंटू के लिए पैकेज में तय किया गया है , इसलिए इसे अब /root/.rpmdb
भी $HOME
परिभाषित नहीं किया जाना चाहिए ।
मुझे आशा है कि यह बताता है कि क्यों .rpmdb
उबुंटू प्रणाली पर निर्देशिकाएं बुलायी जाती हैं, क्यों वे स्वचालित रूप से निर्मित हो सकती हैं, और क्यों सही परिस्थितियों में रूट निर्देशिका में बनाया जा सकता है। यह चिंता करने की कोई बात नहीं है, इस निर्देशिका के अस्तित्व में कुछ भी दुर्भावनापूर्ण नहीं है, और यह केवल हटाया जा सकता है अगर इसकी उपस्थिति सौंदर्यशास्त्र या सुरक्षा स्कैनर के लिए आक्रामक हो।
RPM (Red Hat पैकेज मैनेजर) एक पैकेज मैनेजमेंट सिस्टम है। यह RPM मूल रूप से 1997 में एरिक ट्रॉन और मार्क इविंग द्वारा Red Hat Linux में उपयोग के लिए लिखा गया था , लेकिन अब इसका उपयोग कई GNU / Linux वितरणों में किया जाता है।
पैकेज मैनेजर के पर्दे के पीछे काम करना RPM डेटाबेस ( RPMDB ) में संग्रहीत है /var/lib/rpm
। इसमें एक ही डेटाबेस (संकुल) होता है, जिसमें स्थापित rpms की सभी मेटा जानकारी होती है । डेटाबेस का उपयोग उन सभी फाइलों पर नज़र रखने के लिए किया जाता है जो तब बदल जाती हैं और तब बनती हैं जब कोई उपयोगकर्ता (RPM का उपयोग करके) एक पैकेज स्थापित करता है , इस प्रकार उपयोगकर्ता को (RPM के माध्यम से) बदलावों को उलटने और बाद में पैकेज को हटाने में सक्षम बनाता है।
alien
/.rpmdb
उबंटू प्रणाली (जो आरपीएम का उपयोग नहीं करता है) पर क्यों दिखाई देगी?