सभी प्रकार के वितरणों के लिए लिनक्स बाइनरी सार्वभौमिक है?


15

मैं लिनक्स पर मॉडल सिम वीएचडीएल सिम्युलेटर स्थापित करने के लिए होता हूं। मैनुअल कहता है कि यह केवल RedHat या Suse का समर्थन करता है, लेकिन मैंने इसे Ubuntu पर स्थापित करने का प्रयास किया। और, मैं इसे किसी भी समस्या के बिना स्थापित कर सकता था।

यहाँ छवि विवरण दर्ज करें

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

जवाबों:


15

यह दो प्रश्न हैं:

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

निर्भर करता है:

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

कई वाणिज्यिक कार्यक्रम क्यों कहते हैं कि वे केवल एक या कुछ वितरण पर काम करते हैं?

क्योंकि लिनक्स वितरण की एक बहुत बड़ी संख्या है , और कोई भी उन सभी पर अपने कार्यक्रम का परीक्षण नहीं करना चाहता है।

एक वाणिज्यिक विक्रेता आमतौर पर कहेंगे कि वे केवल उन वितरणों का समर्थन करते हैं जो उन्होंने अपने सॉफ़्टवेयर का परीक्षण किया है। यह विक्रेता के दृष्टिकोण से अन्य वितरणों पर काम कर सकता है या नहीं कर सकता है, बस यह है कि आप शिकायत नहीं कर सकते हैं यदि यह वितरण पर काम नहीं करता है जो वे समर्थन नहीं करते हैं।

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

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


2

RedHat और SUSE दोनों की लंबी उद्यम लिनक्स परंपरा है और उन पैकेजों का उत्पादन करने और उनके लिए परीक्षण करने में कामयाब रहे। समय बीतने के साथ, उबंटू पर काम करने के लिए परीक्षण किए गए पैकेजों के अधिक उदाहरण होंगे। वास्तव में, पिछले साल से ऐसे कई पैकेज उबंटू के साथ काम करने के लिए परीक्षण किए गए हैं। जैसा कि कैननिकल अधिक विक्रेताओं के साथ समझौते करता है, अधिक उबंटू-प्रमाणित पैकेज होंगे।

अपने पहले प्रश्न के लिए: यदि आप एक ऐसा प्रोग्राम बनाना चाहते हैं जो सभी वितरणों पर चलता है, तो एक स्थिर (गतिशील की तुलना में) निष्पादन योग्य बनाएं। एक statically-linkedनिष्पादन योग्य सिस्टम पुस्तकालयों पर निर्भर नहीं करता है, इसलिए वितरण के बीच काम कर सकता है, जब तक कि आर्किटेक्चर (जैसे इंटेल / एएमडी) समान है।

यहाँ एक कार्यक्रम है,

int main(void)
{ 
  printf("Hello, World!\n");
  return 0;
}

सामान्य रूप से संकलित करते हैं,

$ gcc helloworld.c -o helloworld
$ ./helloworld
Hello, World!
$ ldd helloworld
    libc.so.6 => /lib/libc.so.6 (0x00007f3cc3481000)
...
$ 
$ gcc helloworld.c -static -o helloworld_static
$ ./helloworld
Hello, World!
$ ldd helloworld_static
    not a dynamic executable
$ 

तो, आप उस वीएचडीएल कार्यक्रम के साथ क्या कर सकते हैं? .Rpm फ़ाइल प्राप्त करें और इसे .deb में विदेशी का उपयोग करके परिवर्तित करें । फिर, स्थापित करें। यदि यह काम किया है, तो आप ठीक हैं। यदि यह काम नहीं करता है, तो यह lddपता लगाने के लिए उपयोग करें कि कौन सी लाइब्रेरी फ़ाइल गायब है। सबसे खराब स्थिति में, उन अन्य लिनक्स वितरणों के लिए एक वर्चुअल मशीन बनाएं और वहां प्रोग्राम चलाएं।


1

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

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

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