अगर मुझे कोई एप्लिकेशन लिखना है जो किसी भी लिनक्स डिस्ट्रो पर चलेगा, तो मुझे क्या पता होना चाहिए?


15

मैं एक ऐसा ऐप लिखने की योजना बना रहा हूं, जिसे मैं ऐसा करने में किसी भी कोड को फिर से लिखने के बिना किसी भी लिनक्स इंस्टॉलेशन पर चलने में सक्षम होना चाहूंगा (शायद इंटरफ़ेस, गनोम बनाम केडीई, आदि को छोड़कर)।

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


खुला स्रोत या मालिकाना संकलित या व्याख्या?
xenoterracide

खुला स्रोत और संकलित

ठीक है, तो आपको कुछ छोटे ऐप / मेकफाइल या कुछ लिखने के बारे में चिंता करने की ज़रूरत नहीं है, जो आपके प्रोग्राम को
राहत

जवाबों:


10

विकसित करते समय ध्यान रखने योग्य कुछ बिंदु,

  1. एक मानक निर्माण प्रणाली का उपयोग करें
  2. लाइब्रेरी कोडिंग के कठिन रास्तों से बचें
  3. pkg-configइसके बजाय बाहरी पैकेज खोजने के लिए जैसे टूल का उपयोग करें ।
  4. यदि आपके एप्लिकेशन में GUI है, तो कुछ चौखटों का उपयोग करें, जैसे wxWidgetsकि आप जहां चलते हैं उसके आधार पर देशी UI तत्वों को रेंडर कर सकते हैं।
  5. पैकेज के साथ निर्भरता बनाने से बचें जो अन्य वितरणों पर नहीं चलेंगे।

सभी वितरणों पर आपके आवेदन को पूरी तरह से सुनिश्चित करने का एकमात्र तरीका वास्तव में इस पर चलना और परीक्षण करना है। एक तरीका यह है कि आप प्रत्येक वितरण के लिए वर्चुअल मशीन बना सकते हैं। ऐसा करने के लिए वर्चुअलबॉक्स का उपयोग किया जा सकता है। मेरे पास इस तरह के परीक्षण के लिए मेरे बॉक्स पर लगभग 8 आभासी मशीनें हैं।

मुझे लगता है कि आप अनुप्रयोग को लागू करने पर बहुत अधिक सामान्य नहीं कर सकते क्योंकि प्रत्येक वितरण संकुल को स्थापित करने के विभिन्न तरीकों का उपयोग करता है। डेबियन उपयोग debऔर फेडोरा rpm


3
बस सादा कठिन कोडिंग पथ से बचें, सभी डिस्ट्रो के बीच सबसे बड़ा अंतर उनके पैकेज मैनेजर का है, और जहां वे चीजें डालते हैं। मान लें कि वे हर एक फ़ाइल और निर्देशिका को आपसे अलग स्थान पर रख देंगे।
xenoterracide

2

बस मेरे 2 सी, लेकिन मेरे पास उन अनुप्रयोगों के साथ कम सिरदर्द हैं जो या तो आधिकारिक रिपॉजिटरी में पैकेज के साथ आते हैं या जो स्रोत से संकलित किए जाते हैं। 3 पार्टी बायनेरिज़ के रूप में वितरित किए जाने वाले अनुप्रयोग कुछ निर्भरता समस्याओं से पीड़ित होते हैं। मुझे आमतौर पर इनको ट्रैक करने और मैन्युअल रूप से हल करने की आवश्यकता होगी।

इसलिए, अगर मुझे लिनक्स ऐप जारी करना था, तो मैं इसे पैकेज करने और इसे आधिकारिक रिपॉजिटरी में लाने के लिए काम करूंगा। अन्यथा, मैं इसे स्रोत रूप में वितरित करूंगा और उपयोगकर्ता इसे अपने सिस्टम के लिए संकलित करेगा।


2

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

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

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

ध्यान दें कि जो मैंने ऊपर लिखा है वह सच नहीं है यदि आप चाहते हैं कि आपका एप्लिकेशन एम्बेडेड सिस्टम पर काम करे (यहाँ पर कुछ भी जिसका अर्थ सर्वर, डेस्कटॉप या लैपटॉप नहीं है), जो तब भी होता है जब वे लिनक्स कर्नेल चलाते हैं अक्सर सामान्य लाइब्रेरी नहीं होती है, Glibc के साथ शुरू होने से cClibc , Dietlibc , Bionic , आदि के पक्ष में बच जाता है ।


1

मैंने Linux Standards Baseमददगार होना पाया है , खासकर जब आपके आवेदन में सेवाएं (डेमॉन) शामिल हैं। देखें इनमें से कुछ साइटें:

लेकिन अगर मुझे सिर्फ संसाधन तक सीमित रहना पड़ा, तो यह फ़ाइल पदानुक्रम मानक हो सकता है ।


0

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


0

मुख्य बात एक भाषा का चयन करना है। इसे किस भाषा में चलाया जाएगा? यदि आप वास्तव में किसी भी लिनक्स डिस्ट्रो पर चलना चाहते हैं, तो आप इसे पायथन में लिख सकते हैं। कोई भी अजगर ऐप जो linux पर चलेगा (मूल रूप से) 0 संशोधनों के साथ किसी भी linux distro पर चलेगा।

अजगर भी वास्तव में अच्छा GTK और क्यूटी बाँधने है। मैंने gtk के साथ कभी काम नहीं किया है, लेकिन PyQt के साथ काम करना वास्तव में बहुत अच्छा है।

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

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