2010-10-08 9 views
7

जो लोग वास्तव में इस प्रश्न का उत्तर जानते हैं वे वे हैं जो लिनक्स वितरण में शामिल कार्यक्रमों या पुस्तकालयों के लिए विकसित होते हैं, और जो अन्य पुस्तकालयों पर निर्भर करते हैं जो लिनक्स वितरण में शामिल हैं। वे मुझे बता रहे हैं कि विकास पर्यावरण के संदर्भ में वे क्या करते हैं जो मैं वर्णन कर रहा हूं सहायक होगा।नवीनतम लिनक्स अपस्ट्रीम (कर्नेल, जीनोम इत्यादि) पैकेज के विकास के लिए अच्छे लिनक्स वितरण (और विधियों) क्या हैं?

समस्या मूल रूप से इस प्रकार है:

लिनक्स वितरण ठेठ लिनक्स पाइपलाइन के साथ लिनक्स कर्नेल बंडल - चिकना, dbus, udev और की तरह। अधिकांश केडीई या जीनोम जैसे डेस्कटॉप वातावरण भी बंडल करते हैं।

जबकि वितरण में अपने स्वयं के कुछ बंडलिंग प्रोग्राम पैकेज हो सकते हैं, अधिकांश कार्यक्रम और पुस्तकालय अपस्ट्रीम से आते हैं, जिसका अर्थ है कि स्वयं के अलावा अन्य स्रोत। डीबीस जैसे पैकेज "अपस्ट्रीम" हैं और डेबियन, फेडोरा, उबंटू और जैसे वितरण जैसे डाउनस्ट्रीम प्रवाह करते हैं।

कभी-कभी मैं इन कार्यक्रमों का उपयोग करता हूं और महसूस करता हूं कि उन्हें बेहतर किया जा सकता है। कुछ सुधार बग फिक्स हैं जिन पर वास्तव में तर्क नहीं दिया जा सकता है - एक छोटा पैच कहें जो एक अनियंत्रित स्मृति उल्लंघन से सेगमेंटेशन गलती को रोकता है।

इन पैकेजों का निर्माण करते समय, एक चीज़ वितरण में "निर्भर करता है" सूचियां शामिल हैं, क्योंकि इनमें से कई कार्यक्रम कुछ पुस्तकालयों (और उन पुस्तकालयों के कुछ संस्करण) पर भरोसा करते हैं, और उनमें से कुछ पुस्तकालय अन्य पुस्तकालयों पर भरोसा करते हैं। इससे मुझे कुछ जटिलताओं का सामना करना पड़ता है।

यदि मुझे किसी प्रोग्राम या लाइब्रेरी में कोई बग मिलता है और इसे अपस्ट्रीम की रिपोर्ट करता है, तो एक आम सवाल यह है कि, "क्या आप स्रोत नियंत्रण में नवीनतम संस्करण का उपयोग कर रहे हैं, या पुराने संस्करण"। समझा जा सकता है कि डेवलपर्स मुझे नवीनतम प्रतिबद्धता से कोड का उपयोग करना चाहते हैं, क्योंकि वे पहले से कवर किए गए समय को पीछे हटाना नहीं चाहते हैं, खासकर यदि बग ठीक हो गया है।

तो मैं नवीनतम प्रतिबद्धता प्राप्त करने के लिए जाता हूं। लेकिन फिर मुझे एक समस्या आती है क्योंकि नवीनतम प्रतिबद्धता अब लाइब्रेरी पर निर्भर करती है जो मेरे ऑपरेटिंग सिस्टम के उपयोग से नई है।

एक उदाहरण यह हो सकता है कि अगर मैं उबंटू में डिफ़ॉल्ट पाठक के साथ पीडीएफ देख रहा हूं, तो समझें। यह पॉपप्लर लाइब्रेरी में एक दोष होने के कारण ठीक से प्रदर्शित नहीं हो रहा है, इस पर निर्भर करता है। तो मैं एक बग पोस्ट करता हूं, लेकिन वे जानना चाहते हैं कि मेरे पास नवीनतम पॉपप्लर संस्करण है या नहीं। इसलिए मैं नवीनतम पॉपप्लर प्रतिबद्धता डाउनलोड करता हूं, लेकिन पॉपप्लर लाइब्रेरी कैरो लाइब्रेरी पर निर्भर करता है, और मेरे ओएस में नवीनतम कैरो लाइब्रेरी नहीं है। तो मुझे यह प्राप्त करना है - लेकिन फिर कैरो शिकायत करता है कि मेरे पास नवीनतम पिक्समैन और एक्स 11 पुस्तकालय नहीं हैं।

यह इसका एक उदाहरण है, लेकिन यह किसी भी पैकेज के लिए बहुत अधिक है।

तो मेरा सवाल यह है कि इस तरह की चीज़ के लिए उपयोग करने के लिए एक अच्छा लिनक्स वितरण क्या है? एक जो सबसे अद्यतित पैकेज रखने के लिए जाना जाता है, या कम से कम उन्हें आसानी से प्राप्त करने का विकल्प?

या शायद एक लिनक्स वितरण जो मुझे आसानी से ऐसी चीजों को करने की अनुमति देता है। मैंने इस बारे में बात सुनी है कि कैसे सज्जन उभरने के माध्यम से स्रोत से बनाते हैं, और मैं इसे कई समस्याओं को हल कर सकता हूं।

पीबिल्डर और डीबूटस्ट्रैप जैसे टूल का उपयोग करके किसी अन्य सिस्टम के भीतर एक क्रोएटेड वातावरण में नवीनतम पैकेज का सबसिस्टम होने का विकल्प भी है।

आखिरकार, मैं बस सभी पुस्तकालयों के नवीनतम कामों को डाउनलोड कर सकता हूं, बिना किसी निर्भरता वाले किसी का निर्माण कर सकता हूं, जिसे मैं पहले से चिंतित हूं, और फिर अगले पर जाएं और इसे बनाएं, प्रोग्राम को मेरी संकलित स्थानीय लाइब्रेरी का उपयोग करने के लिए इंगित करें , सिस्टम लाइब्रेरी नहीं, और फिर फिर से ऐसा करें। यही वह है जो मैं कई कारणों से बचने की कोशिश कर रहा हूं (जिस तरह से बहुत अधिक मैनुअल मैकिंग हो रहा है, मुझे एक महत्वपूर्ण निर्भरता आदि याद आ सकती है)

+0

उपरोक्त मेरे प्रश्न के संबंध में, मैंने पाया कि जीनोम में "झबिल्ड" (http://live.gnome.org/Jhbuild) नामक एक बिल्ड सिस्टम है जहां आप पूरे जीनोम प्रोजेक्ट के नवीनतम गिट प्रतिबद्ध संस्करणों तक पहुंच सकते हैं । तो यह ऊपर से उदाहरण का समाधान होगा। मैं मानता हूं कि केवीएम बहुत अधिक नुकसान के बारे में चिंता किए बिना खेलने के लिए एक अच्छा वातावरण है, मैंने जवाब पढ़ने के बाद और अधिक करना शुरू कर दिया है। उत्तरों के लिए धन्यवाद। –

उत्तर

0

उपरोक्त मेरे प्रश्न के संबंध में, मैंने पाया कि जीनोम में "झबिल्ड" (live.gnome.org/Jhbuild) नामक एक बिल्ड सिस्टम है जहां आप संपूर्ण जीनोम प्रोजेक्ट के नवीनतम गिट प्रतिबद्ध संस्करणों तक पहुंच सकते हैं। तो यह ऊपर से उदाहरण का समाधान होगा। मैं मानता हूं कि केवीएम बहुत अधिक नुकसान के बारे में चिंता किए बिना खेलने के लिए एक अच्छा वातावरण है, मैंने जवाब पढ़ने के बाद और अधिक करना शुरू कर दिया है। उत्तरों के लिए धन्यवाद।

1

Gentoo बढ़ते किनारे पैकेजों के बारे में बहुत अच्छा है, जब तक आप " ~ x86 "(या ~ amd64 या ~ arch जो भी आपके आर्क है)।

ईबिल्ड संस्करण नियंत्रण के साथ एकीकृत कर सकते हैं, इसलिए संशोधित ईबिल्ड को नवीनतम संशोधन फ़ॉर्म svn या git खींचने में बहुत मुश्किल नहीं है और फिर संकलित करें और इसे इंस्टॉल करें जैसे कि यह वितरित पैकेज था।

+0

इसके अलावा, चूंकि Gentoo स्रोत से चीजें बनाता है, यदि आप कुछ संकुल, या संकुलों का एक पूरा समूह अपग्रेड करते हैं, तो आप अपने सभी आश्रितों को आसानी से पुनर्निर्माण कर सकते हैं (और स्वचालित रूप से, 'revdep-rebuild' का उपयोग करके)। एक द्विआधारी वितरण के लिए आपको लॉक-चरण में संकुल अपग्रेड करना आवश्यक है। –

4

, एक distro के साथ शामिल हो जाओ संकुल आप
Distros सुधार करने के लिए सुनिश्चित करें कि पैकेज संस्करण एक साथ अच्छी तरह से काम चाहते हैं पर ध्यान केंद्रित। लिनक्स सिस्टम बनाने में यह पहला काम है और उन्होंने इसे पहले ही कर लिया है। वे सुनिश्चित करते हैं कि सब कुछ "फिट बैठता है"। यदि आप पैकेज को बेहतर बनाना चाहते हैं, तो डिस्ट्रो के संस्करण में सुधार करें। यदि पैच मान रखता है, तो यह नवीनतम संस्करण पर लागू हो सकता है।

सभी पैकेज डिप्लेन्सी मुद्दों से ग्रस्त नहीं हैं, इसलिए आप रेपो से उनको बना सकते हैं और इस तरह योगदान कर सकते हैं। मुख्य रूप से, डिस्ट्रो पर्यावरण है, अपस्ट्रीम पैकेज अक्सर डिस्ट्रो डेवलपर्स से योगदान प्राप्त करते हैं।

जीनोम कोर वास्तव में के लिए विकसित करने के लिए केवल एक संपूर्ण वितरण का निर्माण करने के लिए बहुत अधिक बिंदु नहीं है। बस सुधार करें, जेनेटू के जीनोम का निर्माण करें और लागू पैच अपस्ट्रीम प्राप्त करने का प्रयास करें।

इस पर फ़ोकस करें कि आप कहां इनपुट कर सकते हैं, और अपने जीवन के 1/4 खर्च के लिए इंतजार नहीं कर रहे हैं और यह काम कर रहे हैं कि क्यों पैकेज एक्स लाइब्रेरी वाई के खिलाफ संकलित नहीं होगा जब आप केवल ज़ेड पर काम करना चाहते हैं!

मैं Fedora Rawhide के साथ काम जब किसी भी देव-सामान कर रही है, यह खून बह रहा है कुछ के रूप में बढ़त के रूप में नहीं है, लेकिन

या वहाँ हमेशा है अच्छा स्थिरता और चंचलता IMVHO प्रदान करता है:

Linux From Scratch, यदि आप चाहें दर्द।

+0

महान सलाह! +1 – slezica

2

यह वास्तव में कोई फर्क नहीं पड़ता। एक डिस्ट्रो को आपको मूल रीढ़ की हड्डी और कुछ स्थिरता देना चाहिए - इसलिए आपके लिए जो भी विचलन "काम करता है" का उपयोग करें। और जो कुछ भी आप काम करते हैं, वैसे भी एक संशोधन नियंत्रण प्रणाली से आ सकता है।

उसने कहा, मैंने 1 99 4 में डेबियन के साथ शुरुआत की और अभी भी इसका उपयोग उबंटू (और मैं 1 99 5 से भी डेबियन के लिए पैकेज बनाए रख रहा हूं) का उपयोग करता हूं। जब मैं उबंटू पर विकसित होता हूं तो कभी-कभी डेबियन अस्थिर से एक स्रोत पैकेज लेता हूं और इसे स्थानीय रूप से बनाता है - जो वास्तव में बहुत आसान है वास्तव में उपयोगी। इस तरह से मेरे पास दोनों दुनिया के सर्वश्रेष्ठ हैं: द्वि-वार्षिक उबंटू अपग्रेड के माध्यम से सबकुछ का "उचित रूप से वर्तमान" सेट, साथ ही जो भी मुझे चाहिए, चुनिंदा प्रविष्टियां किनारे का खून बह रहा है। एक बहुत अच्छा विकल्प डेबियन परीक्षण है जो मेरे पास अन्य सिस्टम पर है।

एक और विकल्प वर्चुअलाइजेशन है: परीक्षण के लिए एक हेडलेस 'ब्लडिंग एज' डिस्ट्रो (डेबियन अस्थिर, कहें) का एक केवीएम, या xen, या वर्चुअलबॉक्स उदाहरण भी उपयोगी है।

0

यदि आप पैकेज के स्रोत कोड को संपादित करना चाहते हैं या संपादित करना चाहते हैं तो Gentoo उपयोगी है।हालांकि, अगर आपको केवल द्विआधारी की आवश्यकता है, आर्क लिनक्स एक अच्छी पसंद है, और यह अच्छी तरह से प्रलेखित है। यदि आप अधिक नियंत्रण चाहते हैं, तो आप हमेशा पैकेजों को डाउनलोड और संकलित कर सकते हैं, लेकिन मुझे लगता है कि आपको केवल अद्यतित पैकेज की आवश्यकता है ताकि आर्क बेहतर होगा। यह आप पर निर्भर करता है।

1

distro की पसंद से कोई फर्क नहीं पड़ता। या तो डेबियन अस्थिर, फेडोरा कच्चे या मैनड्रिवा कुकर संस्करण लिनक्स पैकेज के विकास पर्यावरण के लिए अच्छा होना चाहिए।

संबंधित मुद्दे