स्रोत से निर्माण और एक स्थापित पैकेज का उपयोग करने के बीच क्या अंतर है?


46

मैं सोच रहा था: कुछ स्थापित करते समय, स्थापित निष्पादन योग्य फ़ाइल पर डबल क्लिक करने का एक आसान तरीका है, और दूसरी तरफ, स्रोत से इसे बनाने का एक तरीका है।

स्रोत बंडल को डाउनलोड करने वाला बाद वाला, वास्तव में बोझिल है।

लेकिन इन दोनों विधियों में मूलभूत अंतर क्या है?

जवाबों:


44

सभी सॉफ्टवेयर प्रोग्राम हैं , जिन्हें सोर्स पैकेज भी कहा जाता है । इसलिए आपके सिस्टम पर चलने के लिए सभी स्रोत पैकेजों को पहले निर्मित किया जाना चाहिए ।

द्विआधारी संकुल एक है कि पहले से ही से निर्माण कर रहे हैं स्रोत ताकि उपयोगकर्ताओं की एक बड़ी संख्या को स्थापित करने और उपयोग कर सकते हैं सॉफ्टवेयर में प्रदान की सामान्य सुविधाओं और मानकों के साथ किसी के द्वारा।

बाइनरी पैकेज स्थापित करना आसान है
लेकिन अपस्ट्रीम पैकेज से सभी विकल्प नहीं हो सकते हैं

तो स्रोत से स्थापित करने के लिए, आपको स्रोत कोड स्वयं बनाने की आवश्यकता है। इसका मतलब है कि आपको खुद पर निर्भरता का ध्यान रखना होगा। इसके अलावा आपको पैकेज की सभी विशेषताओं के बारे में पता होना चाहिए ताकि आप इसे अपने अनुसार बना सकें।

स्रोत से स्थापित करने के लाभ:

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

स्रोत से कम इंस्टॉलेशन में आपको भारी कस्टमाइज़ेशन विकल्प मिलता है, साथ ही इसमें बहुत अधिक मेहनत लगती है, जबकि बाइनरी से इंस्टॉलेशन आसान है लेकिन आप अपनी इच्छानुसार कस्टमाइज़ नहीं कर सकते हैं

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

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


4
स्रोत को आपके सिस्टम के लिए अनुकूलित तरीके से भी संकलित किया जा सकता है (जो कि .. एक अच्छा विचार नहीं हो सकता है, क्योंकि तब संकलित सामान सिस्टम के लिए "विशिष्ट" है और बैकअप पर काम नहीं कर सकता है ... लेकिन आपके पास है स्रोत, आप फिर से मिला सकते हैं (यदि आपके पास उस समय है))
ओलिवियर दुलैक

यह इस बात पर निर्भर करता है कि आपके पास वह "बैकअप सिस्टम" है या नहीं। यदि आप कुछ शोध कर रहे हैं, तो आप आमतौर पर नहीं करते हैं।
h22

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

6
@ultrasawblade - आप स्पष्ट रूप से पर्याप्त पागल नहीं हैं! <G> - पूरी मोंटी के लिए cm.bell-labs.com/who/ken/trust.html देखें ।
जो

32

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

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

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

लगभग सभी मामलों में पैकेज का उपयोग करना बहुत आसान है:

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

हालांकि, कभी-कभी पैकेज्ड संस्करण एक पुराना संस्करण या इससे भी बदतर होता है, कोई भी पैकेज्ड संस्करण नहीं होता है; किस मामले में आपका एकमात्र विकल्प खुद को संकलित करना है। यदि आप करते हैं, तो आपको निम्नलिखित पर विचार करने की आवश्यकता है:

  • आपको अपने सिस्टम पर सभी डेवलपर टूल इंस्टॉल करने होंगे
  • आप एक अद्यतन के लिए जाँच और recompiling के लिए जिम्मेदार होंगे
  • आपको यह सुनिश्चित करने की आवश्यकता होगी कि devपैकेज सहित सभी निर्भरताएं स्थापित की गई हैं - उनमें से कई हो सकते हैं।
  • यदि आपके डिस्ट्रो पर यह अपेक्षित नहीं है तो आपको समस्याओं को डीबग करना पड़ सकता है

यदि आप अतिरिक्त प्रयास करने के लिए तैयार हैं, तो स्रोत से संकलन आपको निम्नलिखित लाभ दे सकता है:

  • नवीनतम उपलब्ध संस्करण तक पहुंच
  • प्रदर्शन / स्थिरता के लिए संकलन प्रक्रिया के अनुकूलन का विकल्प
  • आनदं!

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

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

आर्क लिनक्स में एक पैकेजिंग सिस्टम है जहां मुख्यधारा पैकेज बाइनरी हैं, जबकि PKGBUILDफ़ाइलों का उपयोग करके सिस्टम पर कई अतिरिक्त पैकेज संकलित किए जाते हैं ।


19

अन्य उत्तरों के अलावा, मैं कुछ जोड़ना चाहूंगा:

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

हर बार एप्लिकेशन अपडेट होने के बाद आपको नए संस्करण को फिर से स्थापित करना होगा, बस इस बात का ध्यान रखें कि आपको हर हफ्ते अपना कुछ समय देना होगा।

यदि आप ऐसा नहीं कर सकते हैं, तो पैकेज अनुरक्षक को आपके लिए यह काम करने देना बेहतर है।


6

स्रोत से भवन बिल्कुल आपकी मशीन की वास्तुकला को निर्दिष्ट करने की अनुमति देता है। नए सीपीयू में अतिरिक्त निर्देश होते हैं जो संकलक समझते हैं, थोड़ा सा प्रदर्शन बाहर निचोड़ते हैं। प्री-बिल्ड पैकेज आमतौर पर सामान्य उपयोग में अभी भी सबसे पुरातन सीपीयू पर गिना जाता है।

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

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

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


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

0

दोनों दुनिया में सबसे अच्छा पाने का एक तरीका (अप टू डेट सॉफ्टवेयर, सिंपल इनस्टॉल / अनइंस्टॉल, ज्यादातर डिस्ट्रीब्यूशन ट्वीक्स और एडाप्शन को शामिल कर सकते हैं, स्थानीय आवश्यकताओं के लिए ऑप्टिमाइज़ कर सकते हैं), जबकि लागत (खुद को अप टू डेट रखना है, बग देखना है। और अंतिम क्षणों में पैच, विकास का पालन करें, आप बग फिक्स और संस्करणों के बीच असंगतता के संबंध में अपने आप पर हैं) को कम नहीं किया जा सकता है (बहुत), अपने पैकेजों का निर्माण करना है, जो आपके वितरण से स्रोत पैकेजों के साथ शुरू होता है। हां, यह सिर्फ निर्माण और स्थापित करने से अधिक काम है।


1
यह एक दिलचस्प जवाब ("दोनों दुनिया का सबसे अच्छा") की तरह लगता है, लेकिन मैं आपके मतलब के बारे में बहुत कुछ नहीं समझ सकता: "अपने पैकेज का निर्माण करना है, जो आपके वितरण से स्रोत पैकेज के साथ शुरू होता है"। क्या आप रिवाइडिंग / व्याख्या करना चाहेंगे?
Jan :ankowski
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.