जो लोग वास्तव में इस प्रश्न का उत्तर जानते हैं वे वे हैं जो लिनक्स वितरण में शामिल कार्यक्रमों या पुस्तकालयों के लिए विकसित होते हैं, और जो अन्य पुस्तकालयों पर निर्भर करते हैं जो लिनक्स वितरण में शामिल हैं। वे मुझे बता रहे हैं कि विकास पर्यावरण के संदर्भ में वे क्या करते हैं जो मैं वर्णन कर रहा हूं सहायक होगा।नवीनतम लिनक्स अपस्ट्रीम (कर्नेल, जीनोम इत्यादि) पैकेज के विकास के लिए अच्छे लिनक्स वितरण (और विधियों) क्या हैं?
समस्या मूल रूप से इस प्रकार है:
लिनक्स वितरण ठेठ लिनक्स पाइपलाइन के साथ लिनक्स कर्नेल बंडल - चिकना, dbus, udev और की तरह। अधिकांश केडीई या जीनोम जैसे डेस्कटॉप वातावरण भी बंडल करते हैं।
जबकि वितरण में अपने स्वयं के कुछ बंडलिंग प्रोग्राम पैकेज हो सकते हैं, अधिकांश कार्यक्रम और पुस्तकालय अपस्ट्रीम से आते हैं, जिसका अर्थ है कि स्वयं के अलावा अन्य स्रोत। डीबीस जैसे पैकेज "अपस्ट्रीम" हैं और डेबियन, फेडोरा, उबंटू और जैसे वितरण जैसे डाउनस्ट्रीम प्रवाह करते हैं।
कभी-कभी मैं इन कार्यक्रमों का उपयोग करता हूं और महसूस करता हूं कि उन्हें बेहतर किया जा सकता है। कुछ सुधार बग फिक्स हैं जिन पर वास्तव में तर्क नहीं दिया जा सकता है - एक छोटा पैच कहें जो एक अनियंत्रित स्मृति उल्लंघन से सेगमेंटेशन गलती को रोकता है।
इन पैकेजों का निर्माण करते समय, एक चीज़ वितरण में "निर्भर करता है" सूचियां शामिल हैं, क्योंकि इनमें से कई कार्यक्रम कुछ पुस्तकालयों (और उन पुस्तकालयों के कुछ संस्करण) पर भरोसा करते हैं, और उनमें से कुछ पुस्तकालय अन्य पुस्तकालयों पर भरोसा करते हैं। इससे मुझे कुछ जटिलताओं का सामना करना पड़ता है।
यदि मुझे किसी प्रोग्राम या लाइब्रेरी में कोई बग मिलता है और इसे अपस्ट्रीम की रिपोर्ट करता है, तो एक आम सवाल यह है कि, "क्या आप स्रोत नियंत्रण में नवीनतम संस्करण का उपयोग कर रहे हैं, या पुराने संस्करण"। समझा जा सकता है कि डेवलपर्स मुझे नवीनतम प्रतिबद्धता से कोड का उपयोग करना चाहते हैं, क्योंकि वे पहले से कवर किए गए समय को पीछे हटाना नहीं चाहते हैं, खासकर यदि बग ठीक हो गया है।
तो मैं नवीनतम प्रतिबद्धता प्राप्त करने के लिए जाता हूं। लेकिन फिर मुझे एक समस्या आती है क्योंकि नवीनतम प्रतिबद्धता अब लाइब्रेरी पर निर्भर करती है जो मेरे ऑपरेटिंग सिस्टम के उपयोग से नई है।
एक उदाहरण यह हो सकता है कि अगर मैं उबंटू में डिफ़ॉल्ट पाठक के साथ पीडीएफ देख रहा हूं, तो समझें। यह पॉपप्लर लाइब्रेरी में एक दोष होने के कारण ठीक से प्रदर्शित नहीं हो रहा है, इस पर निर्भर करता है। तो मैं एक बग पोस्ट करता हूं, लेकिन वे जानना चाहते हैं कि मेरे पास नवीनतम पॉपप्लर संस्करण है या नहीं। इसलिए मैं नवीनतम पॉपप्लर प्रतिबद्धता डाउनलोड करता हूं, लेकिन पॉपप्लर लाइब्रेरी कैरो लाइब्रेरी पर निर्भर करता है, और मेरे ओएस में नवीनतम कैरो लाइब्रेरी नहीं है। तो मुझे यह प्राप्त करना है - लेकिन फिर कैरो शिकायत करता है कि मेरे पास नवीनतम पिक्समैन और एक्स 11 पुस्तकालय नहीं हैं।
यह इसका एक उदाहरण है, लेकिन यह किसी भी पैकेज के लिए बहुत अधिक है।
तो मेरा सवाल यह है कि इस तरह की चीज़ के लिए उपयोग करने के लिए एक अच्छा लिनक्स वितरण क्या है? एक जो सबसे अद्यतित पैकेज रखने के लिए जाना जाता है, या कम से कम उन्हें आसानी से प्राप्त करने का विकल्प?
या शायद एक लिनक्स वितरण जो मुझे आसानी से ऐसी चीजों को करने की अनुमति देता है। मैंने इस बारे में बात सुनी है कि कैसे सज्जन उभरने के माध्यम से स्रोत से बनाते हैं, और मैं इसे कई समस्याओं को हल कर सकता हूं।
पीबिल्डर और डीबूटस्ट्रैप जैसे टूल का उपयोग करके किसी अन्य सिस्टम के भीतर एक क्रोएटेड वातावरण में नवीनतम पैकेज का सबसिस्टम होने का विकल्प भी है।
आखिरकार, मैं बस सभी पुस्तकालयों के नवीनतम कामों को डाउनलोड कर सकता हूं, बिना किसी निर्भरता वाले किसी का निर्माण कर सकता हूं, जिसे मैं पहले से चिंतित हूं, और फिर अगले पर जाएं और इसे बनाएं, प्रोग्राम को मेरी संकलित स्थानीय लाइब्रेरी का उपयोग करने के लिए इंगित करें , सिस्टम लाइब्रेरी नहीं, और फिर फिर से ऐसा करें। यही वह है जो मैं कई कारणों से बचने की कोशिश कर रहा हूं (जिस तरह से बहुत अधिक मैनुअल मैकिंग हो रहा है, मुझे एक महत्वपूर्ण निर्भरता आदि याद आ सकती है)
उपरोक्त मेरे प्रश्न के संबंध में, मैंने पाया कि जीनोम में "झबिल्ड" (http://live.gnome.org/Jhbuild) नामक एक बिल्ड सिस्टम है जहां आप पूरे जीनोम प्रोजेक्ट के नवीनतम गिट प्रतिबद्ध संस्करणों तक पहुंच सकते हैं । तो यह ऊपर से उदाहरण का समाधान होगा। मैं मानता हूं कि केवीएम बहुत अधिक नुकसान के बारे में चिंता किए बिना खेलने के लिए एक अच्छा वातावरण है, मैंने जवाब पढ़ने के बाद और अधिक करना शुरू कर दिया है। उत्तरों के लिए धन्यवाद। –