2009-10-05 13 views
21

मैंने अभी विंडोज़ से लिनक्स में एक एप्लिकेशन पोर्टिंग समाप्त कर दिया है।
मुझे एप्लिकेशन का इंस्टॉलर बनाना है।
आवेदन खुला स्रोत => मुझे एप्लिकेशन की बाइनरी (निष्पादन योग्य फ़ाइल, जोड़े .so फ़ाइलें, फ़ाइलों और छवियों की सहायता) वितरित करना चाहिए।लिनक्स के लिए बाइनरी एप्लिकेशन वितरित करने का सबसे अच्छा तरीका क्या है?

मुझे ऐसा करने के कई तरीके मिले:
- RPM and DEB packages;
- installer in .sh files;
- Autopackage

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

लिनक्स के लिए बाइनरी एप्लिकेशन वितरित करने के लिए सर्वोत्तम तरीका क्या है?

उत्तर

18

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

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

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

2

कोई कोई अच्छा तरीका नहीं है (सार्वभौमिक रूप से बोल रहा है)। bin.gz द्विआधारी, जो काम करना चाहिए।

+1

+1, लिनक्स दुनिया में कुछ भी सार्वभौमिक नहीं है – vava

+0

आवेदन निष्पादन योग्य शॉर्टकट बनाने के बारे में क्या? – Dmitriy

+0

यह भी निर्भर करता है। डेस्कटॉप वातावरण के लिए क्या? (हालांकि freedesktop.org पर लोगों के लिए मानक होना चाहिए) –

0

मैंने इसे काम पर भी देखा है और मुझे सहमत होना होगा कि वास्तव में "सर्वश्रेष्ठ तरीका" नहीं है। यदि आपका एप्लिकेशन स्रोत के रूप में वितरित किया जा रहा है तो मैं tar.gz में पैक किए गए मेक/कॉन्फ़िगरेशन विधियों के साथ जाऊंगा। यह लिनक्स दुनिया में काफी सार्वभौमिक लगता है।

बड़े संगठन को देखने के लिए क्या करना है और यह देखने का एक अच्छा तरीका है कि वे अपनी बाइनरी कैसे वितरित करते हैं।

3

बहुत अच्छे उत्तर थे (मेरा शामिल :) :) here। हालांकि यह बाइनरी संगतता के बारे में अधिक है (जिसे आपको चिंता करने की आवश्यकता है)।

इंस्टॉलर के लिए मैं ऑटोपैकेज की सिफारिश करता हूं (हमने इसके साथ हमारे सॉफ़्टवेयर के कई संस्करण सफलतापूर्वक जारी किए हैं), उन्होंने "installer.sh" भाग पहले से ही अधिक (उदाहरण के लिए डेस्कटॉप एकीकरण) किया था।

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

0

डेबियन पर आरपीएम और आरएचईएल पर एपीटी स्थापित करना संभव है।

यदि आप इस कार्यक्रम को स्थैतिक रूप से लिंक करने जा रहे हैं, या गतिशील रूप से केवल पुस्तकालयों के साथ लिंक करते हैं जिन्हें आप पैकेज में वितरित करेंगे, तो इससे कोई फर्क नहीं पड़ता कि आप इसे कैसे वितरित करते हैं। सबसे आसान तरीका tar.gz है और यह काम करेगा।

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

+0

ए। डीईबी, एक "एपीटी" नहीं (जो एक पैकेज उपकरण के लिए खड़ा है) –

+0

ठीक है। विकिपीडिया प्रविष्टि निश्चित है, तो गलत है। क्या "उन्नत पैकेजिंग टूल" आधिकारिक है, लेकिन कभी भी इस्तेमाल नहीं किया गया नाम? http://en.wikipedia.org/wiki/Advanced_Packaging_Tool – DigitalRoss

+0

मेरा बुरा, यह वास्तव में "उन्नत पैकेजिंग टूल" है (इसे जांचना चाहिए था)। फिर भी, एपीटी ** ** एक पैकेजिंग प्रारूप नहीं है, यह डेबियन के '.deb' पैकेज के साथ काम करने के लिए एक पैकेज प्रबंधन प्रणाली है। –

2

मैं आपको एक अतिरिक्त संभावना बताता हूं, हालांकि मुझे इसकी स्थिति से अवगत नहीं है: Loki installer। लोकी लिनक्स के लिए पोर्टिंग करने वाले वीडियो गेम करने वाली कंपनी थीं। यह 2002 में नीचे चला गया, लेकिन इंस्टॉलर उपलब्ध है।

InstallShield is also available for linux। हालांकि स्थिति पर कोई विचार नहीं है।

हालांकि कई लोग आपको टैर के साथ जाने का प्रस्ताव दे रहे हैं।जीजी, कृपया मत करो। मुझे लगता है कि आप अपने उपयोगकर्ताओं को स्थापना प्रक्रिया के लिए एक सुखद अनुभव प्रदान करना चाहते हैं। एक tar.gz सबसे निम्न स्तर, निम्न गुणवत्ता, कम प्रयोज्यता विकल्पों में से एक है जो आप कर सकते हैं। यह हर जगह काम करता है क्योंकि यह मूल रूप से कुछ भी नहीं करता है, जैसा कि आप जानते हैं।

freedesktop.org और एलएसबी के लोग सामान कहां रखना चाहते हैं, इस बारे में काफी स्पष्ट हैं। आपको जो करने की ज़रूरत है वह करने के लिए एक दोस्ताना कार्यक्रम है। Autopackage imho संख्याएं हैं (मुझे यह पसंद है), लेकिन इसकी उम्र के बावजूद, मैंने एक एकल प्रोग्राम को ऑटोपैकेज के रूप में वितरित नहीं किया है।

इसे सावधानी से मूल्यांकन करें, लेकिन इसके पक्ष में गति का हिस्सा होने का मौका न छोड़ें, क्योंकि यह लोकप्रिय नहीं है। यदि यह आपके लिए काम करता है, और यह आपके उपयोगकर्ताओं के लिए काम करता है, तो बाकी सब कुछ कोई फर्क नहीं पड़ता।

+0

InstallBuilder InstallAnywhere के लिए एक अद्यतित विकल्प है http://installbuilder.bitrock.com –

+0

मेरा पसंदीदा और इतना सच: "यह हर जगह काम करता है क्योंकि यह मूल रूप से कुछ भी नहीं करता है" – aliopi

2

आप InstallBuilder को आजमा सकते हैं। यह क्रॉसप्लेटफार्म है (विंडोज, लिनक्स, मैक ओएस एक्स, सोलारिस और लगभग किसी अन्य यूनिक्स प्लेटफ़ॉर्म पर चलता है)। इसका उपयोग इंटेल, मोटोरोला, गिटहब, माईएसक्यूएल, नोकिया/ट्रॉल्टेक और many other companies द्वारा किया जाता है ताकि आप अच्छी कंपनी में हों :) बाइनरी इंस्टॉलर्स के अतिरिक्त, यह क्रॉस-डिस्ट्रो आरपीएम और डीईबी पैकेज भी बना सकता है।

इंस्टॉलबिल्डर वाणिज्यिक है, लेकिन हम ओपन सोर्स प्रोग्राम के लिए मुफ्त लाइसेंस प्रदान करते हैं और एमआईएसवी या एकल डेवलपर्स के लिए बहुत महत्वपूर्ण छूट देते हैं, बस हमें एक लाइन छोड़ दें।

2

बाइनरी के साथ एक .tar.bz2 संग्रह बनाएं, फिर इस तरह इसके लिए एक फ़ीड प्रकाशित: अपने GPG कुंजी के साथ

<?xml version="1.0" ?> 
<interface uri="http://mysite/myprog.xml" 
      xmlns="http://zero-install.sourceforge.net/2004/injector/interface"> 
    <name>MyProgram</name> 
    <summary>what it does</summary> 
    <description>A longer description goes here.</description> 

    <implementation main='bin/myprog' 
        id="sha1new=THEDIGEST" 
        version='1.0'> 
    <archive href='http://mysite/myprogram-1.0.tar.bz2' 
      size='10000'/> 
    </implementation> 
</interface> 

साइन यह। आप पाचन की गणना करने के लिए 0install.net पर टूल का उपयोग कर सकते हैं और सही प्रारूप में आपके लिए जीपीजी हस्ताक्षर जोड़ सकते हैं।

फिर, इसे यूरी विशेषता में पते पर अपनी वेबसाइट पर रखें। सबसे लिनक्स वितरण (जैसे Ubuntu, फेडोरा, डेबियन, Gentoo, ArchLinux, आदि) पर कोई उपयोगकर्ता तो स्थापित करें और के साथ अपने कार्यक्रम चला सकते हैं:

0launch http://mysite/myprog.xml 

उनकी प्रणाली भी समय समय पर अपडेट की जांच करेगा। विभिन्न डेस्कटॉप वातावरण के लिए विभिन्न जीयूआई हैं, लेकिन कमांड लाइन हर जगह काम करेगी।

प्रेरणा के लिए existing feeds में से कुछ को भी देखें।

संबंधित मुद्दे

 संबंधित मुद्दे