/Usr/lib/.build-id/ dir का उद्देश्य क्या है?


10

F27 की एक ताजा आवृत्ति (netinstall) के बाद मैंने देखा कि कई pkgs ने /usr/lib/.build-id/dir में छोटी फाइलें रखी हैं । पहली बार मुझे लगा कि मैंने किसी तरह dnf के लिए कुछ अस्पष्ट "डिबग" मोड सक्षम किया है, लेकिन यहां तक ​​कि

$ dnf download httpd

इसमें एक आरपीएम डब्ल्यू / /usr/lib/.build-id/*फाइलें लाता है।

मुझे यह याद नहीं है कि मौजूदा फेडोरा रिले में यह है।


rpm --query --file /usr/lib/.build-idसंकुल के एक टन "मालिक" /usr/lib/.build-id... अजीब।
डेविड टोनहोफर

जवाबों:


23

/usr/lib/.build-idस्थापित पैकेज के लिए मुख्य बिल्ड-आईडी फ़ाइलें हैं। फेडोरा 27 से पहले, ये डिबग फ़ाइलों के साथ रहते थे /usr/lib/debugऔर केवल डीबग RPM में भेज दिए जाते थे। फेडोरा 27 में, कई डिबग सूचना पैकेजों के समानांतर स्थापना की अनुमति देने के लिए एक बदलाव पेश किया गया था । उस परिवर्तन के एक हिस्से में मुख्य बिल्ड-आईडी फ़ाइलों को वे पैकेज में मिलाते हैं, जो यह सुनिश्चित करते हैं कि वे स्थापित बायनेरिज़ से मेल खाते हैं।

डिबग सूचना संकुल का उपयोग कई वितरणों में किया जाता है ताकि उपयोगकर्ताओं के लिए डिबगिंग जानकारी स्थापित करने के लिए एक रास्ता प्रदान किया जा सके, जब सभी के लिए बायनेरी को फूलाए बिना। जब कोई प्रोग्राम या लाइब्रेरी बनाई और लिंक की जाती है, तो इसे डीबगिंग जानकारी के साथ बनाया जा सकता है, जो डीबगर तब बाइनरी स्थानों में मैप मैप का उपयोग अपने स्रोत कोड में स्थानों के साथ कर सकते हैं; लेकिन यह जानकारी काफी जगह लेती है। इसलिए डिबगिंग की जानकारी आम तौर पर बायनेरिज़ से छीन ली जाती है, इससे पहले कि वे पैक किए जाएं। हाल के वर्षों में, stripऔर objcopyबढ़ाया गया है ताकि डिबगिंग जानकारी को अलग से निकाला और संग्रहीत किया जा सके - यही कारण है कि डिबग जानकारी पैकेज बनाए गए हैं। सभी की जरूरत है तो यह सुनिश्चित करने का कुछ तरीका है कि एक बाइनरी और उसके डिबग जानकारी के अनुरूप हो, और वह है जहां बिल्ड आईडी आते हैं - वे अद्वितीय पहचानकर्ता हैं जिनके द्वारा गणना की जाती हैld( --build-idवहाँ के लिए देखो ) एक बाइनरी के महत्वपूर्ण भागों पर। "मुख्य बिल्ड-आईडी फाइलें" एक बिल्ड आईडी से संबंधित बाइनरी या डीबग जानकारी फ़ाइल के लिए सिम्लिंक हैं; वे दो-तरफा मैपिंग को लागू करने की अनुमति देते हैं, ताकि कोर डंप को उपयोगी रूप से डिबग किया जा सके (इसमें बायनेरिज़ से उनके बिल्ड आईडी में स्वयं .gnu_debuglinkसेक्शन में बायनेरिज़ का लिंक होता है )। आपको फेडोरा बिल्ड-आईडी फीचर विवरण में इस सब के पीछे तर्क का एक विस्तृत विवरण मिलेगा ।

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