2012-09-02 22 views
6

मेरे पास Maid नामक कमांड-लाइन उपयोगिता है जिसे मैं वर्तमान में a RubyGem के रूप में वितरित करता हूं। मैं इसे .deb पैकेज to make it easier for Ubuntu users to install के रूप में वितरित करना भी चाहूंगा।मैं अपने मणि निर्भरताओं सहित उबंटू के लिए रूबी एप्लिकेशन कैसे पैकेज करूं?

sudo apt-get install ruby 
sudo apt-get install rubygems 
# Make sure `ruby` and `gem` are in `$PATH` 
sudo gem install maid 
maid version # example command 

आदर्श रूप में, मैं चाहता हूँ एक भी आदेश एक ताजा उबंटू स्थापना पर स्थापित करने के लिए:

sudo apt-get install maid 
maid version # example command 

अभी, Ubuntu उपयोगकर्ताओं को मैन्युअल रूप से काफ़ी ऐसा करने के लिए, विशेष रूप से अपरिचित किसी रूबी के साथ के लिए है

gem2deb उपकरण (gem2tgz, dh-make-ruby, आदि) के सुइट लगभग मैं क्या तलाश कर रहा हूँ कर रहे हैं। लेकिन डिफ़ॉल्ट रूप से gem2deb आवश्यक किसी भी मणि निर्भरता को पैकेज नहीं करता है। नौकरानी वास्तव में सरल है और केवल रनटाइम पर thor पर निर्भर करती है। (संपादित करें: नौकरानी के रूप में विकसित हुआ है, और अब और अधिक निर्भरता है।) लेकिन उस निर्भरता के बिना, कुछ भी काम नहीं करता है।

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

+0

मैं कुछ ऐसा कर रहा हूं, हालांकि नौकरानी के रूप में जटिल नहीं है। - https://launchpad.net/~jamesgifford/+archive/factero और https://github.com/jrgifford/ruby-debian-packaging – jrg

उत्तर

2

क्योंकि apt-get और gem दोनों निर्भरता को हल करने हैं, तो आप सिर्फ एक मेटा पैकेज कि ruby1.9.1 पर निर्भर करता है (जो अपने आप RubyGems में लाता है और बाकी सब) बना सकते हैं। फिर पोस्ट-इंस्टॉल स्क्रिप्ट में, बस sudo gem1.9.1 install maid करें।

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

+0

यह मुझे पसंद होने से कम "शुद्ध" लगता है, लेकिन यह भी लगता है सबसे सरल समाधान। क्या आपको लगता है कि 'मणि इंस्टॉल' को '--version' विकल्प लेना चाहिए? –

+0

आईआईआरसी, मणि इंस्टॉल में एक -v विकल्प है जो ऐसा करता है। – jrg

+0

@ बेंजामिनऑक्स: सुधार के लिए धन्यवाद। – Linuxios

1

fpm का उपयोग करके आप (दूसरों के बीच) सीधे रत्नों से देवताओं को बना सकते हैं। wiki का एक विस्तृत उदाहरण है। इसका सारांश

cd /tmp 
fpm -s gem -t deb maid 
+0

मैं अपने शोध में 'एफपीएम' भर गया। यह एक अच्छी परियोजना की तरह प्रतीत होता है, लेकिन मुझे यकीन नहीं है कि 'rubygem-thor-0.14.6.amd64.deb' जैसे पैकेज बनाने/वितरित करने के बारे में क्या सोचना है। मैंने देखा है कि कई रूबी परियोजनाएं उस कारण से उनके '.deb' पैकेज के अंदर अपनी निर्भरताओं को एम्बेड करती हैं, जो समस्याग्रस्त भी लगती हैं। –

+1

एक अच्छा समझौता अपने स्वयं के एपीटी भंडार बनाने और अपने उपयोगकर्ताओं के लिए बनाए रखने के लिए है। एफपीएम के लिए एक अच्छा साथी है [फ्रेट] (https://github.com/rcrowley/freight/) जो इस तरह के भंडार को बनाए रखने के लिए कुछ आसान मददगार प्रदान करता है। उस ने कहा, आप अपनी निर्भरताओं को एफपीएम के साथ भी शामिल कर सकते हैं, लेकिन संभावित पैकेज ओवरलैपिंग से निपटना होगा। अफसोस की बात है, मुफ्त लंच के रूप में ऐसी कोई चीज नहीं है। –

+0

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