बाइनरी पैकेज क्या है? उनका निर्माण कैसे करें?


12

मैं बाइनरी पैकेज के बारे में विस्तार प्राप्त करना चाहता हूं और उन्हें लिनक्स पर चलाना चाहता हूं। मैं डेबियन बेस (उबंटू / लिनक्स मिंट) लिनक्स ओएस चला रहा हूं।

  1. स्रोत से बाइनरी पैकेज कैसे बनाएं? और क्या मैं सीधे अनुप्रयोगों (जैसे फ़ायरफ़ॉक्स, आदि) और गेम (जैसे बॉस्वर, आदि) के लिए बाइनरी पैकेज डाउनलोड कर सकता हूं?
  2. मैं कुछ प्रत्यक्ष पैकेज चलाता हूं जो "xyz.linux.run" प्रारूप में है ये पैकेज क्या हैं? क्या वे निर्भरता से स्वतंत्र हैं? या क्या यह पूर्व-निर्मित बाइनरी पैकेज है?
  3. उन्हें कैसे बनाया जाए जो लिनक्स पर सीधे "xyz.linux.run" द्वारा लिनक्स ऑपरेटिंग सिस्टम पर चलाया जा सकता है।
  4. बाइनरी पैकेज और डेब पैकेज के बीच अंतर क्या है?

क्या आपने पाया कि स्रोत से बाइनरी पैकेज कैसे बनाया जाए?!
डॉ। अंजी

जवाबों:


17

एक सख्त अर्थ में एक द्विआधारी फ़ाइल वह है जो मानव पठनीय पाठ के रूप में एन्कोडेड वर्ण नहीं है। अधिक बोलचाल की भाषा में, "बाइनरी" एक फ़ाइल को संदर्भित करता है जो संकलित, निष्पादन योग्य कोड है, हालांकि फ़ाइल स्वयं निष्पादन योग्य नहीं हो सकती है (अकेले चलाने की क्षमता के लिए अनुमतियों का इतना अधिक उल्लेख नहीं है; कुछ बाइनरी कोड फाइलें जैसे कि लाइब्रेरी हैं; संकलित, लेकिन अनुमतियों की परवाह किए बिना, वे स्वयं द्वारा निष्पादित नहीं किए जा सकते हैं)। एक द्विआधारी जो एक स्टैंडअलोन निष्पादन योग्य के रूप में चलता है, एक "निष्पादन योग्य" है, हालांकि सभी निष्पादन योग्य फाइलें बायनेरिज़ नहीं हैं (और यह अनुमतियों के बारे में है: निष्पादन योग्य पाठ फाइलें जो एक शेल्टर के माध्यम से एक दुभाषिया को आमंत्रित करती #!/bin/shहैं जैसे निष्पादन योग्य भी हैं)।

बाइनरी पैकेज क्या है?

एक लिनक्स संदर्भ में एक बाइनरी पैकेज एक एप्लीकेशन पैकेज है जिसमें स्रोत कोड के विपरीत (पूर्व-निर्मित) निष्पादन योग्य होते हैं।

ध्यान दें कि इसका मतलब यह नहीं है कि एक पैकेज फ़ाइल ही एक निष्पादन योग्य है। एक पैकेज फ़ाइल एक संग्रह (एक तरह का .zip) है जिसमें अन्य फाइलें शामिल हैं, और एक "बाइनरी" पैकेज फ़ाइल वह है जिसमें विशेष रूप से निष्पादनयोग्य शामिल हैं (हालांकि फिर से, निष्पादन योग्य वास्तव में बायनेरिज़ नहीं हैं, और वास्तव में बाइनरी पैकेज का उपयोग किया जा सकता है) संकलित पुस्तकालय जो बाइनरी कोड हैं, लेकिन निष्पादन योग्य नहीं हैं)। हालाँकि, इन फ़ाइलों को एक्सेस करने के लिए पैकेज को अनपैक किया जाना चाहिए।

आमतौर पर पैकेज मैनेजमेंट सिस्टम (जैसे apt / dpkg) द्वारा आपके लिए इसका ध्यान रखा जाता है, जो पैकेज और अनपैक्स को डाउनलोड करता है और आपके लिए बायनेरिज़ को अंदर स्थापित करता है।

बाइनरी पैकेज और डेब पैकेज के बीच अंतर क्या है?

ऐसा नहीं है - .debपैकेज बाइनरी पैकेज हैं, हालांकि ऐसे .debएस हैं जिनके बजाय स्रोत होते हैं, ये आमतौर पर -srcउनके नाम से जुड़े होते हैं।

मैं कुछ प्रत्यक्ष पैकेज चलाता हूं जो "xyz.linux.run" प्रारूप में है ये पैकेज क्या हैं?

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


उत्कृष्ट उत्तर!, क्या मुझे इस प्रश्न से अलग होना चाहिए: स्रोत से पूर्व-निर्मित निष्पादन योग्य (बाइनरी पैकेज) का निर्माण कैसे करें?
पंड्या

हाँ, यह सब अपने आप में एक अच्छा सवाल होगा, अगर इसका जवाब यहाँ किसी रूप में पहले से नहीं है।
गोल्डीलॉक्स

6

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

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

लेकिन आपको रीडमी पढ़ने के लिए कहना वास्तव में इस सवाल का जवाब नहीं देता है, इसलिए एक मूल अर्थ में, आप एक बहुत ही बुनियादी कार्यक्रम लिख सकते हैं

    #include <stdio.h>

    int main( ) {
        printf("Hello World!");
    }

और में टाइप gcc helloWorld.cऔर gccकि द्विआधारी और आउटपुट एक प्रोग्राम है जो लेखन का निर्माण करेगा "नमस्ते दुनिया!" चलाने के लिए कंसोल के लिए।

ठीक है, तो अब आपने एक कार्यक्रम बनाया है, लेकिन क्या यह हर एक स्रोत फ़ाइल में टाइप करने के लिए चूसना नहीं होगा जिसे आप हर बार संकलन करना चाहते थे जो आपको कुछ संकलन करने के लिए आवश्यक था? इसके makefilesलिए क्या हैं। आप एक प्रोग्राम स्रोत फ़ाइलें यह आमतौर पर एक makefile या कुछ अन्य निर्माण स्वचालन फ़ाइल (साथ आ जाएगा का एक समूह है कि पार चला तो ant, Cmakeया autoconfया कुछ और)।

इस प्रकार के प्रोग्राम बनाने के लिए, बस make <build target>डायरेक्टरी के अंदर रन करें। मेरे हैलो वर्ल्ड प्रोग्राम के लिए एक helloworldमेकफाइल में एक लक्ष्य शामिल हो सकता है, जिसे सिर्फ helloWorld.c कहा जाता है । मैं इसे चलाऊंगा make helloworldऔर यह एक बाइनरी आउटपुट करेगा।

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

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