क्या RPM और .deb पैकेज दोनों का समर्थन करने वाले लिनक्स डिस्ट्रो का निर्माण संभव है?


29

मैं सोच रहा हूं कि क्या लिनक्स डिस्ट्रो का निर्माण करना सैद्धांतिक रूप से संभव है जो आरपीएम और डेबियन पैकेज दोनों का समर्थन कर सकता है।

वहाँ किसी भी distros रहते हैं कि दोनों का समर्थन करते हैं?

और अगर यह संभव भी नहीं है?


4
जब तक हम पैकेजों को गैर-भरोसेमंद संख्या के साथ निर्भरता पर विचार करते हैं, मैं यह नहीं देखता कि उन्हें स्थापित करना सैद्धांतिक रूप से असंभव कैसे हो सकता है ।
दिमित्री ग्रिगोरीव

2
यह संभव होगा यदि आप उपयोगकर्ता के लिए निर्भरता संकल्प छोड़ देते हैं :)
रैकैंडॉबिनमैन

उस मामले में @rackandboneman, alien.tgz फाइलों को पैकेज में बदलने के लिए स्लैकवेयर प्लस काम करेगा :) यदि आप स्रोत डीबीएस या आरपीएमएस का उपयोग करते हैं तो एलएफएस भी ऐसा कर सकता है।
ivanivan

@DmitryGrigoryev IIRC, निर्भरता रिज़ॉल्यूशन एनपी-पूर्ण है जब आप नकारात्मक निर्भरता (संघर्ष) के लिए अनुमति देते हैं।
user253751

@ मिनीबिस एनपी-पूर्ण का तात्पर्य कम्प्यूटेबल से है। गैर-विवादास्पद का अर्थ है "जैसे कि यदि यह प्रोग्राम libc5 के साथ लटका हुआ है, तो libc6 स्थापित करें"।
दिमित्री ग्रिगोरीव

जवाबों:



42

मुझे नहीं लगा कि वहाँ कोई वितरण है जो दोनों को मूल रूप से समर्थन करते हैं, लेकिन यह पता चलता है कि विकास में एक है, बेडरॉक लिनक्स ( जानकारी के लिए iMalinowski के लिए धन्यवाद )। अन्य वितरणों पर आप रूपांतरण उपकरण का उपयोग कर सकते हैं जैसे कि alienएक प्रारूप से दूसरे प्रारूप में परिवर्तित करना। कुछ भी सॉफ़्टवेयर-आधारित करने योग्य है, जिसे पर्याप्त समय और ऊर्जा दी गई है, इसलिए इस तरह के वितरण का निर्माण करना संभव होगा (लेकिन पैकेज .debऔर .rpmपैकेज की क्षमताओं के बीच अंतर को देखते हुए , काफी मुश्किल है)।

हालाँकि यह सब शायद इस विचार से उपजा है कि दोनों पैकेज प्रारूपों का समर्थन करने से जीवन सरल हो जाएगा, क्योंकि आप तब कहीं से भी पैकेज स्थापित कर सकते हैं (अच्छी तरह से, कहीं भी .debया किसी भी तरह से .rpm)। दार्शनिक रूप से, यह त्रुटिपूर्ण है। एक वितरण संकुल का सुसंगत सेट है; यदि आप उस वितरण के लिए सॉफ़्टवेयर प्रदान करना चाहते हैं, तो आपको वास्तव में इसे विशेष रूप से लक्षित करना होगा, जिसमें इसके पैकेज प्रारूप (और अधिक महत्वपूर्ण रूप से, मेटाडेटा) का उपयोग करना शामिल है। मूल रूप से कई पैकेज स्वरूपों का समर्थन करने का कोई मतलब नहीं है।

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

आपको अपने वितरण को एक आधार के रूप में विचार करना चाहिए, जिस पर आप अपनी इच्छित प्रणाली का निर्माण कर सकते हैं, अपने वितरण के नियमों और पारिस्थितिकी तंत्र से चिपके बिना, अन्य वितरणों से चीजों को मिलाए बिना। मिश्रण और मिलान (या बल्कि, वितरण-वितरण वातावरण प्रदान करने के लिए) का समर्थन करने के लिए आपको उच्च-स्तरीय अमूर्त की आवश्यकता होती है: स्टीम रनटाइम, फ्लैटपैक, आदि।


10

नहीं, ऐसा कोई राक्षस नहीं बनना चाहिए। इसके विपरीत, कहते हैं, एक मैकओएस एप्लिकेशन बंडल, जिसमें आमतौर पर ऑपरेटिंग सिस्टम पर चलाने के लिए एप्लिकेशन की जरूरत की सभी चीजें शामिल होती हैं, RPM और .deb पैकेज लगभग हमेशा अन्य पैकेजों पर निर्भर होते हैं, जैसे कि साझा लाइब्रेरी। लिनक्स पैकेज उन अन्य पैकेजों को सूचीबद्ध करता है, जिन्हें मौजूद रहने की आवश्यकता होती है, और पैकेज प्रबंधक उन आवश्यकताओं को लागू करने में मदद करता है। इसके अलावा, लिनक्स वितरण अलग-अलग तरीके से किया जाता है (जैसे /etc/network/interfaces.dबनाम /etc/sysconfig/network-scripts)।

आपको एक ही पैकेज प्रारूप परिवार के भीतर मनमाने ढंग से रिपॉजिटरी से पैकेज भी नहीं मिलाना चाहिए। यही है, एक CentOS मशीन पर SuSE पैकेज स्थापित करना केवल परेशानी के लिए पूछ रहा है, भले ही वे दोनों RPM का उपयोग करें। मैं एक ही OS के एक अलग संस्करण (जैसे 16.04 सिस्टम पर Ubuntu 14.04 पैकेज) के लिए इरादा पैकेज भी स्थापित नहीं करूंगा जब तक कि मुझे पता नहीं था कि मैं वास्तव में क्या कर रहा था।

इसलिए, RPM और .deb दोनों को एक ही सिस्टम पर सपोर्ट करने की कोशिश करना सवाल से बाहर है। कुछ हताश स्थितियों में, आप विशिष्ट पैकेजों का उपयोग करके परिवर्तित कर सकते हैं alien, लेकिन आपको ऐसी समस्याओं के निवारण में बहुत अधिक प्रयास करने की अपेक्षा करनी चाहिए जो इस तरह के हैक से अनिवार्य रूप से उत्पन्न होंगी।


3
यहां तक ​​कि एक ही परिवार से उत्पन्न डिस्ट्रोस के लिए, मिक्सिंग पैकेज एक बुरा विचार हो सकता है। उदाहरण के लिए डेबियन और उबंटू दोनों .deb आधारित हैं, लेकिन उबंटू ने कुछ डिज़ाइन निर्णय लिए हैं जो कि डेबियन से अलग हैं इसलिए डेबियन में उबंटू पैकेज का उपयोग करना हमेशा काम नहीं कर सकता है।
स्लीपबेटमैन

1
यहां तक ​​कि डेबियन डिस्ट्रो संस्करणों का मिश्रण भी एक बुरा विचार है: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri

फिर मिंट उस उबंटू पर आधारित है जो डेबियन पर आधारित है ... :-)
DevSolar

1
मैं यह नहीं कहने जा रहा हूं कि मुझे लगता है कि यह एक अच्छा विचार है। उसी समय, मैं यह देखने में विफल हूं कि यह इतना भयानक विचार क्यों है। मुझे लगता है कि इन समस्याओं को दूर किया जा सकता है - यह सिर्फ इतना है कि ऐसा करने के लिए कोई वास्तविक इनाम नहीं है।
एमोरी

9

ठीक है, वहाँ alien( मैन पेज ), जो बीच में परिवर्तित हो सकता है rpm, debआदि, लेकिन मुझे लगता है कि वास्तविक समस्याएं निर्भरता से निपटने से आएगी (सॉफ़्टवेयर के लिए अलग पैकेज नाम), और कॉन्फ़िगरेशन फ़ाइलों के स्थान।

बेशक, अगर आपका मतलब है कि दोनों प्रकार के पैकेज वितरण से ही आ सकते हैं, तो संभवतः चारों ओर काम किया जा सकता है, लेकिन फिर कोई भी ऐसा क्यों करेगा ... (और आपको अभी भी एक या दूसरे को सब कुछ बदलने की आवश्यकता होगी , क्योंकि मुझे नहीं dpkgपता कि rpmइसके डेटाबेस को कैसे पढ़ना है और इसके विपरीत।)


3

हां, यह संभव है, लेकिन यह वितरण को बर्बाद कर देता है।

पैकेज केवल प्रारूप नहीं हैं, जिन्हें एक प्रारूप से दूसरे प्रारूप में आसानी से पोर्ट किया जा सकता है।

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

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

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

अंत में, एक वितरण सुसंगत संकुल द्वारा किया जाता है, न कि केवल संकुल द्वारा।


0

हाँ और सबसे .deb आधारित डिस्ट्रोस पहले से ही यह करता है, लेकिन ...

डेबियन और संबंधित परिवारों पर, कम से कम, आपके पास alienआरपीएम-पैकेज स्थापित करने की अनुमति होगी।

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


0

हां और ना। डिब और आरपीएम सिर्फ प्रारूप हैं। आप दोनों स्वरूपों का समर्थन कर सकते हैं लेकिन इसके व्यर्थ। पैकेज आम तौर पर वितरणों के बीच तुलनीय नहीं होते हैं विशेष रूप से वितरण जो एक दूसरे पर आधारित नहीं होते हैं।

यदि सभी वितरणों की समान संस्करण आवश्यकताएं थीं, तो सभी वितरण एक पैकेज चयन होगा। आप संकुल को सूचीबद्ध करके कोई भी वितरण स्थापित कर सकते हैं।

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

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