मैन्युअल रूप से DEB फ़ाइल कैसे बनाएँ?


46

मैं मैन्युअल रूप से एक DEB फ़ाइल बनाना चाहता हूँ। मैं बस एक फ़ोल्डर प्रदान करना चाहता हूं जिसमें इंस्टॉल करने के लिए डेटा और स्थापना के बाद निष्पादित होने वाली स्क्रिप्ट है।

क्या यह संभव है?


बहुत अच्छा जवाब नहीं जो आप चुनते हैं?
गिगमेग्स

@ डेविड, वास्तव में मैंने इसे "dpkg-deb" के साथ बनाया है, यह बहुत आसान है, इसीलिए मैंने गाइल्स को चुना, पैकेज फोल्डर में फाइलों को सूचीबद्ध करने से मुझे वहां जगह बनाने के लिए फाइल का स्पष्ट दृश्य मिलता है। इसलिए मुझे लगता है कि उसका जवाब बेहतर है ..
डेज़ी

मैंने पैकेज की सभी फाइलों को भी सूचीबद्ध किया है।
गिगमेग्स

11
@ मेरा मतलब है, यह तर्क देते हुए कि उसका उत्तर व्युत्पन्न है, एक बात है, लेकिन "बहुत अच्छा उत्तर नहीं"? गिल्स का जवाब उत्कृष्ट है; इससे कोई फर्क नहीं पड़ता कि अगर आपका जवाब पहले था, तो वह कहीं अधिक पूर्ण है। और मौजूदा जवाब लेने और उस पर विस्तार करने में कुछ भी गलत नहीं है; कि एक अच्छी बात है
माइकल Mrozek

जवाबों:


57

स्रोत पैकेज बनाना

मेरी सिफारिश स्रोत पैकेज बनाने की है। स्थापित निर्माण आवश्यक , debhelper , dh-मेकअप । उस निर्देशिका में बदलें जहाँ आप फ़ाइलें स्थापित करना चाहते हैं (निर्देशिका नाम फॉर्म का होना चाहिए $PACKAGE-$VERSION, उदाहरण के myapp-4.2-1लिए पैकेजिंग मायप V4.2 पर आपके पहले प्रयास के लिए), और चलाएं dh_make --createorig। सवालों का जवाब दो। देबेल्पर एक उपनिर्देशिका में फाइल तैयार करके एक पैकेज बनाने के लिए आवश्यक बुनियादी ढांचे का निर्माण करेगा debian, वैकल्पिक फाइल के लिए कुछ अनिवार्य फाइलें और टेम्पलेट दोनों। आपको इनमें से कुछ फ़ाइलों को संशोधित करने की आवश्यकता हो सकती है:

  • debian/rulesभवन बनाने के लिए संपादित करें और फ़ाइलों को सही जगह पर स्थापित करें। यदि आपको केवल कुछ फ़ाइलों की प्रतिलिपि बनाने और सामान संकलित करने की आवश्यकता नहीं है, तो बस debian/installयह निर्दिष्ट करने के लिए कि कौन सी फ़ाइलों को स्थापित करने की आवश्यकता है , फ़ाइल संपादित करें ।
  • debian/copyrightअपने पैकेज के बारे में लाइसेंस की जानकारी और नवीनतम संस्करण (यदि प्रासंगिक) प्राप्त करने के बारे में जानकारी जोड़ने के लिए संपादित करें ।
  • debian/changelogITP के संदर्भ को हटाने के लिए संपादित करें (यह तभी प्रासंगिक है जब आप डेबियन प्रोजेक्ट के लिए काम कर रहे हों)। नाम बदलें debian/postinst.exकरने के लिए debian/postinstऔर अपने इंस्टॉल करने के बाद वहाँ आदेशों जोड़ें। यदि आप बाद में अपने पैकेज को अपडेट करते हैं, तो debchange -iचैंज एंट्री जोड़ने के लिए दौड़ें या फ़ाइल को Emacs में संपादित करें ( dpkg-dev-el स्थापित के साथ)।

पैकेज dpkg-buildpackage -rfakeroot -us -ucबनाने के लिए चलाएँ .deb( -us -ucयदि आप अपनी पीजीपी कुंजी के साथ पैकेज पर हस्ताक्षर करना चाहते हैं तो हटा दें )।

सीधे बाइनरी पैकेज बनाना

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

आप यह सुनिश्चित करते हैं कि आपका पैकेज अपेक्षित फ़ाइलों को स्थापित करता है /usr/share/doc/copyright(जिसमें पैकेज सामग्री का लाइसेंस होता है, साथ ही जहां पैकेज का नवीनतम संस्करण ढूंढना होता है) और /usr/share/doc/changelog.Debian.gz(डेब पैकेज के चैंज सहित)। यदि आपको केवल इन-हाउस पैकेज का उपयोग करने जा रहे हैं, तो आपको इनकी आवश्यकता नहीं है, लेकिन यह उनके लिए बेहतर है।

डेबियन और डेरिवेटिव पर

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

$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42

कठिन मार्ग

यदि आपके पास डेबियन टूल नहीं हैं, तो उन फ़ाइलों का एक संग्रह बनाएं, जिन्हें आप पैकेज करना चाहते हैं data.tar.gz, नियंत्रण फ़ाइलों का एक अलग संग्रह control.tar.gz( जिसे कोई उपनिर्देशिका नहीं कहा जाता है ), और एक पाठ फ़ाइल जिसे कहा जाता है debian-binaryऔर पाठ युक्त है 2.0

cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz

आप कम से कम एक की जरूरत नियंत्रण फ़ाइल क्षेत्रों के साथ Package, Maintainer, Priority, Architecture, Installed-Size, Version, और किसी भी आवश्यक निर्भरता घोषणा।

स्थापना के बाद निष्पादित की जाने वाली स्क्रिप्ट को कहा जाता है postinst। इसे निष्पादन योग्य बनाना सुनिश्चित करें। यह साथ-साथ चलता है control

एक अलग प्रारूप से एक बाइनरी पैकेज परिवर्तित करना

यदि आपके पास पहले से ही एक और वितरण से बाइनरी पैकेज है, तो आप इसे परिवर्तित करने के लिए विदेशी का उपयोग कर सकते हैं ।


3
IMO यह मेरे awser की एक प्रति है? तुम क्या सोचते हो?
गिगमेग्स

1
उत्तर ओप जानता है कि एमएसीएस का उपयोग कैसे किया जाता है। क्या वास्तव में यहाँ emacs आवश्यक है? चैंज को संपादित करने के लिए, मुझे लगता है कि कोई भी उपयोग कर सकता है dch -i
फहीम मीठा

जो arकर रहा है tarवह नहीं है?
मिमीस्टिक

@mmstick यह एक अलग प्रारूप है। मुझे नहीं पता कि डेब प्रारूप के डिजाइनरों ने यहां ar का उपयोग करने के लिए क्यों चुना।
गिल्स एसओ- बुराई को रोकें '

1
यदि आप नाम और ईमेल का dh_make --createorigउपयोग करना चाहते हैं , तो आपको पहले export DEBEMAIL="me@example.com"और export DEBFULLNAME="Firstname Lastname"पहले की आवश्यकता है ।
रयान

10

सबसे पहले आपको एक बिल्ड फ़ोल्डर और अपनी फ़ाइलों का एक संग्रह बनाने की आवश्यकता है: tar czvf data.tar.gz files

फिर बिल्ड फोल्डर में आपको कुछ वांछित सूचना के साथ एक नियंत्रण फ़ाइल बनानी होगी:

 Package: xxxxxx
 Version: 0.0.1
 Section: user/hidden 
 Priority: optional
 Architecture: armel
 Installed-Size: `du -ks usr|cut -f 1`
 Maintainer: Your Name <xxx@xxx.xx>
 Description: This is optional, but creates warnings if left out

तब आप स्वतंत्र रूप से प्रीस्टीन, पोस्टिंट, प्रीरम और पोस्टम शेल स्क्रिप्ट को प्री और पोस्ट इंस्टॉल और प्री और पोस्ट हटाने के लिए .deb फ़ाइल के व्यवहार को हटा सकते हैं और फिर आप टार के साथ कंट्रोल आर्काइव बना सकते हैं: tar czvf control.tar.gz control preinst postinst prerm postrm

फिर आपको एक डेबियन-बाइनरी फ़ाइल की आवश्यकता है echo 2.0 > debian-binary:। अपने बिल्ड फ़ोल्डर में अब आपके पास ये फ़ाइलें होनी चाहिए: debian-binary control.tar.gzऔर data.tar.gz

अंत में आपको ar.deb फ़ाइल बनाने के लिए पैकेज की आवश्यकता है :ar -r xxx.deb debian-binary control.tar.gz data.tar.gz


1
इसके बारे में ar -r xxx.deb debian-binary control.tar.gz data.tar.gzतनाव के लायक हो सकता है आदेश महत्वपूर्ण है: नियंत्रण डेटा से पहले आना चाहिए।
हिबू ५

@ बायेमान, शीर्ष मतदान का उत्तर वास्तव में आंशिक रूप से आपके पाठ पर आधारित लगता है, लेकिन यह इसमें विवरण जोड़ता है, और यह बेहतर पठनीय है। अनुक्रम हम कॉपी / पेस्ट कर सकते हैं यह विशेष रूप से अधिक सुंदर बनाता है।
मारीतोमो

3

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

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



1

इसके Ubuntu पैकेज के साथ डेबियन पर जिम्ब्रा 7 के साथ भाग गया। (मैं जिद्दी हूँ, मुझे डेबियन की तरह लगता है> बीबुट्टू केवल उबंटू के लिए रिलीज़ होने के बावजूद।) मुझे यकीन नहीं है कि मैंने इससे पहले कैसे काम किया, मुझे यकीन है कि मुझे ऐसा करने की ज़रूरत नहीं है जब मैंने इसे पहले स्थापित किया था!

mkdir new
for i in *.deb
 do echo `date`: working on $i
 ar x $i
 cd control
 rm * 2> /dev/null
 tar -xzpvf ../control.tar.gz
 tr "_" "-" < control > control2
 mv -v control2 control
 tar -czpvf ../control.tar.gz .
 cd ..
 ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control

आपकी सभी नई .deb फाइलें अंदर होंगी new/

नोट : यह निचोड़ पर था - मट्ठा पर dpkg का --force-bad-version अब।


1

पैकेजों के त्वरित निर्माण के लिए आप प्रोग्राम की स्थापना रद्द कर सकते हैं। यह कार्यक्रम का एक वृत्तिकरण करता है, परिवर्तन देखता है - और इसका एक डेबिट या आरपीएम पैकेज बनाता है।


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

wiki.debian.org/CheckInstall को देखें यदि आप इंस्टॉल के दौरान चीजों को बदलना चाहते हैं - तो इंस्टॉल सेक्शन को बदलने के लिए सबसे आसान तरीका है मेकफाइल को संशोधित करना। prerm / postrm - मुझे इसे संशोधित करने का तरीका नहीं मिला। यह केवल छोटे कार्यक्रमों के लिए है सरल स्थापना रद्द करने की अनुमति देने के लिए।
अपरिभाषित

-4
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
  libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.