किसी फ़ाइल में सॉफ्टवेयर्स को क्यों नहीं पैक किया जाता है?


15

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

मैं उबंटू या अधिक सामान्यतः लिनक्स संकुल की निर्भरता को समझता हूं। लेकिन मुझे आश्चर्य है, ये क्यों मौजूद हैं। क्या सभी निर्भरताओं के साथ एक फ़ाइल बनाना संभव नहीं है? इस विधि के साथ क्या समस्याएं हैं?

कृपया विवरण में कारण देने का प्रयास करें।

जवाबों:


17

मुख्य कारण यह है कि कार्यक्रम के साथ निर्भरताएं शामिल नहीं हैं ताकि सिस्टम के घटकों को आसानी से अपडेट किया जा सके।

कल्पना कीजिए कि एक निर्भरता का उपयोग पांच विभिन्न कार्यक्रमों द्वारा किया जाता है। यदि उस निर्भरता में कोई सुरक्षा भेद्यता पाई जाती है, तो पाँच प्रतियों के बजाय केवल एक प्रति अद्यतन की जानी चाहिए।

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


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

यह कभी-कभी प्रत्यक्ष इंटरनेट कनेक्शन के बिना कंप्यूटर के लिए समस्याग्रस्त हो सकता है। APTONCD जैसे उपकरण हैं, जो इन कठिनाइयों को कम करने में मदद करते हैं।


2
कभी-कभी इंटरनेट जैसे उचित उपयोग के बिना हमारे जैसे उपयोगकर्ताओं के साथ कोई
अनवर

2
किसी भी तरह से मुझे इस सुविधा से नफरत है क्योंकि मेरा इंटरनेट धीमा है। और डाउनलोड किए गए ubuntu सॉफ्टवेयर्स को साझा करना बहुत मुश्किल है, (उपयुक्त कैश का बैकअप लेने का सुझाव न दें क्योंकि मैं इसे दैनिक करता हूं)
Tachyons

1
लेकिन फिर, आपको वास्तव में सुविधा से प्यार करना चाहिए! क्योंकि, पांच बार लाइब्रेरी डाउनलोड करने के बजाय, आप इसे एक बार डाउनलोड कर लें। कल्पना करें कि आपके उबंटू इंस्टालेशन के हर प्रोग्राम की अपनी जीटीके + या क्यूटी इंस्टॉलेशन आ गई! वे चीजें बहुत बड़ी हैं
माइकल वाइल्ड

4

यह पूरी तरह सच नहीं है। उबंटू सॉफ्टवेयर आमतौर पर एक ही .deb फ़ाइल में आता है। पूरी तरह से सरलीकृत (और गलत) होने के कारण, .deb फाइलें खिड़कियों के लिए संवाददाता .exe फ़ाइल होती हैं। सभी प्रोग्राम, जिनमें विंडो शामिल हैं, ऑपरेटिव सिस्टम (लाइब्रेरी) में अन्य फ़ाइलों के लिए निर्भरता का उपयोग करते हैं। स्थापना प्रक्रिया अलग-अलग ओएस में कम या ज्यादा स्पष्ट है। जब आप एक प्रोग्राम को डाउनलोड करने के लिए उबंटू में सॉफ्टवेयर सेंटर का उपयोग करते हैं, तो आप केवल उन निर्भरताओं को डाउनलोड करते हैं जो आपके सिस्टम और वास्तविक प्रोग्राम फाइलों में स्थापित नहीं हैं। यह प्रणाली को डुप्लिकेट फ़ाइलों और डुप्लिकेट कार्यक्षमता के साथ अतिभारित होने से रोकता है जो संघर्षों में समाप्त होता है।

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

आशा है कि यह समझ में आता है।


2
बिल्कुल सही। यहां तक ​​कि अन्य डिस्ट्रोस (उबंटू जितना अच्छा नहीं) ।rpms का उपयोग करते हैं। एक .exe, .deb, या जो कुछ भी है, के बारे में यह मूल रूप से एक बड़ा .tar है जो विभिन्न स्थानों पर खुद को अर्क करता है! विंडोज पर, यह प्रोग्राम फाइल्स में जाता है और आपको एक प्रगति बार दिखाता है, लेकिन लिनक्स पर यह आपको बहुत अधिक दिखाता है।
WindowsEscapist

1
मुझे लगता है कि सुझाव है कि एक exe फ़ाइल एक बड़ी टार फ़ाइल की तरह है सरलीकरण की दिशा में बहुत दूर जा रहा है। एक टार फ़ाइल निष्पादन योग्य नहीं है। एक exe फ़ाइल (स्वाभाविक रूप से) है। यही है, एक डिब फाइल के साथ (जो वास्तव में एक टार फाइल है) यह पैकेज मैनेजर है जो फाइलों को इधर-उधर करने की वास्तविक प्रक्रिया को संभालता है, इसलिए सिस्टम बहुत ही सुरुचिपूर्ण ढंग से चीजों को ऊपर रख सकता है। इंस्टॉलर प्रोग्राम (जैसे विंडोज) में, यह इंस्टॉलर खुद कर रहा है। यह चीजों को चुस्त रखने के लिए कुछ सिस्टम घटकों से बात कर सकता है, लेकिन केवल अगर यह ऐसा लगता है।
डायलन मैक्कल

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

मुझे लगता है कि लिनक्स तरीके विंडोज के तरीकों से कहीं बेहतर हैं। लेकिन हाँ विंडोज के तरीके सरल और आसान हैं
अनवर

2
Windows फ़ाइल स्वरूप जो संगत .debहै .msi
एलियाह कगन

3

उबंटू में, अधिकांश सॉफ्टवेयर एक ही फाइल में आते हैं। यह एक *.debडेबियन पैकेज फ़ाइल है जो आपके पैकेज-मैनेजर से डाउनलोड, अनपैक और इंस्टॉल की जाती है।

उबंटू स्व-निकालने वाले निष्पादकों से सॉफ़्टवेयर स्थापित नहीं करता है जैसे कि अधिकांश विंडोज़ सॉफ़्टवेयर करता है?

क्योंकि सेल्फ एक्सट्रैक्टिंग *.exeफाइल्स स्वीकार करने के लिए एक बहुत ही खतरनाक प्रपोजल हैं।

डेबियन / उबंटू एक की तरह एक सेल्फ एक्सट्रैक्टिंग एक्जीक्यूटिव और एक पैकेजिंग सिस्टम के बीच सबसे महत्वपूर्ण अंतर हैं:

  • सुरक्षा
  • पारदर्शिता
  • अधिक दानेदार नियंत्रण

विस्तृत रूप में:

सुरक्षा

विंडोज़ की दुनिया में आपको उस सिंगल *.exeफाइल पर भरोसा करना होगा । वास्तव में किसी पर विश्वास कैसे किया जा सकता है? आप यह भी कैसे जान सकते हैं कि यह कुछ स्थापित करता है? आप यह कैसे सुनिश्चित कर सकते हैं कि यह आपकी पीठ पीछे अन्य चीजें नहीं करता है?

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

दानेदार नियंत्रण

एक *.exeफ़ाइल के साथ , आप अनिवार्य रूप से एक काम कर सकते हैं: इसे निष्पादित करें। उबंटू में आप अपने पैकेज मैनेजर की सुविधा से पैकेज की सामग्री, विवरण, कॉन्फ़िगरेशन, व्यक्तिगत फाइलें, नवीनतम परिवर्तन, बग फिक्स आदि का निरीक्षण कर सकते हैं, यह तय करने से पहले कि क्या स्थापित करना है या नहीं।

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

पारदर्शिता

यह और आगे बढ़ता है। उबंटू पर मैं वास्तव में अपने सिस्टम पर भरोसा कर सकता हूं, क्योंकि मैं कई स्तरों पर सॉफ्टवेयर को सत्यापित कर सकता हूं। अंतिम स्तर स्रोत-कोड को देखने में सक्षम हो रहा है। बाइनरी पैकेज में संबंधित स्रोत पैकेज होते हैं। मैं वास्तव में स्रोत को देख सकता हूं (उदाहरण: ' apt-get source bash ' आपको bash शेल के पूर्ण स्रोत देगा)। * .Exe फ़ाइलों की दुनिया में, आमतौर पर केवल बायनेरिज़ होते हैं, और कौन जानता है कि वे वास्तव में पर्दे के पीछे क्या करते हैं?

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


2

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


0

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

विंडोज सॉफ्टवेयर्स ज्यादातर एक ही फाइल में पैक किए जाते हैं। क्या इसका मतलब यह है कि उनके पास कोई निर्भरता नहीं है?

नहीं, लगभग सभी सॉफ्टवेयर्स में सॉफ्टवेयर्स के कुछ अन्य टुकड़ों पर निर्भरता होती है। (जब तक कि सॉफ़्टवेयर बहुत निम्न-स्तर का न हो और सीधे हार्डवेयर से बात कर सकता है, जैसे कि ऑपरेटिंग सिस्टम) । माइक्रोसॉफ़्ट के सॉफ्टवेयर्स निर्भरता से मुक्त नहीं हैं। तो, महत्वपूर्ण सवाल यह है: वे इसे कैसे संभालते हैं?

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

यहाँ कुछ ऐसा है जो मैंने Google पर पाया है कि हर गेम के साथ DirectX क्यों शामिल है।

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

पूरे लेख के लिए यहां क्लिक करें यह स्पष्ट है कि वे निर्भरता को संभालने के साथ बहुत अच्छा नहीं कर रहे हैं।

ज्यादातर समय, निर्भरता की परवाह किए बिना पहले से ही जगह में हैं, वे इसे सरलता (अपने उपयोगकर्ताओं के लिए) प्राप्त करने के लिए प्रदान करते हैं । यह भी देखें कि कितने सॉफ्टवेयर्स थीम्स में .NET रनटाइम घटक शामिल हैं।
मेरे अनुभव से एक और उदाहरण: एक बार जब मैंने एक एमएस सॉफ्टवेयर डाउनलोड और इंस्टॉल किया। प्रक्रिया से संतुष्ट होने के कारण, मैंने सॉफ्टवेयर को खोलने के लिए आइकन पर क्लिक किया, तभी यह मुझे बताता है कि "मुझे चलाने के लिए जावा की आवश्यकता है"। लिनक्स संसार में ऐसी स्थिति कभी भी पैकेज प्रबंधन के माध्यम से नहीं होती है। (जब तक आप रिपॉजिटरी साइट से .deb फ़ाइलों को डाउनलोड करने और एमएस फैशन में डबल क्लिक करके इंस्टॉल करने की कोशिश नहीं करते)

लिनक्स निर्भरता की इस समस्या को कैसे संभालता है?

ठीक है, लिनक्स या उबंटू इस तथ्य को नहीं छिपाता है कि, आपको सॉफ़्टवेयर (Microsoft तरीके के विपरीत) का उपयोग करने के लिए निर्भरताएं स्थापित करनी होंगी। लेकिन जब आप घटकों को स्थापित करते हैं, तो एक अन्य सॉफ़्टवेयर जो उसी घटक पर निर्भर करता है, पहले से स्थापित इंस्टॉलेशन का उपयोग करता है (एमएस सॉफ्टवेयर्स सहित अन्य चीजों के विपरीत)।

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