मैं मैन्युअल रूप से एक DEB फ़ाइल बनाना चाहता हूँ। मैं बस एक फ़ोल्डर प्रदान करना चाहता हूं जिसमें इंस्टॉल करने के लिए डेटा और स्थापना के बाद निष्पादित होने वाली स्क्रिप्ट है।
क्या यह संभव है?
मैं मैन्युअल रूप से एक DEB फ़ाइल बनाना चाहता हूँ। मैं बस एक फ़ोल्डर प्रदान करना चाहता हूं जिसमें इंस्टॉल करने के लिए डेटा और स्थापना के बाद निष्पादित होने वाली स्क्रिप्ट है।
क्या यह संभव है?
जवाबों:
मेरी सिफारिश स्रोत पैकेज बनाने की है। स्थापित निर्माण आवश्यक , debhelper , dh-मेकअप । उस निर्देशिका में बदलें जहाँ आप फ़ाइलें स्थापित करना चाहते हैं (निर्देशिका नाम फॉर्म का होना चाहिए $PACKAGE-$VERSION
, उदाहरण के myapp-4.2-1
लिए पैकेजिंग मायप V4.2 पर आपके पहले प्रयास के लिए), और चलाएं dh_make --createorig
। सवालों का जवाब दो। देबेल्पर एक उपनिर्देशिका में फाइल तैयार करके एक पैकेज बनाने के लिए आवश्यक बुनियादी ढांचे का निर्माण करेगा debian
, वैकल्पिक फाइल के लिए कुछ अनिवार्य फाइलें और टेम्पलेट दोनों। आपको इनमें से कुछ फ़ाइलों को संशोधित करने की आवश्यकता हो सकती है:
debian/rules
भवन बनाने के लिए संपादित करें और फ़ाइलों को सही जगह पर स्थापित करें। यदि आपको केवल कुछ फ़ाइलों की प्रतिलिपि बनाने और सामान संकलित करने की आवश्यकता नहीं है, तो बस debian/install
यह निर्दिष्ट करने के लिए कि कौन सी फ़ाइलों को स्थापित करने की आवश्यकता है , फ़ाइल संपादित करें ।debian/copyright
अपने पैकेज के बारे में लाइसेंस की जानकारी और नवीनतम संस्करण (यदि प्रासंगिक) प्राप्त करने के बारे में जानकारी जोड़ने के लिए संपादित करें ।debian/changelog
ITP के संदर्भ को हटाने के लिए संपादित करें (यह तभी प्रासंगिक है जब आप डेबियन प्रोजेक्ट के लिए काम कर रहे हों)। नाम बदलें 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
।
यदि आपके पास पहले से ही एक और वितरण से बाइनरी पैकेज है, तो आप इसे परिवर्तित करने के लिए विदेशी का उपयोग कर सकते हैं ।
dch -i
।
ar
कर रहा है tar
वह नहीं है?
dh_make --createorig
उपयोग करना चाहते हैं , तो आपको पहले export DEBEMAIL="me@example.com"
और export DEBFULLNAME="Firstname Lastname"
पहले की आवश्यकता है ।
सबसे पहले आपको एक बिल्ड फ़ोल्डर और अपनी फ़ाइलों का एक संग्रह बनाने की आवश्यकता है: 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
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
तनाव के लायक हो सकता है आदेश महत्वपूर्ण है: नियंत्रण डेटा से पहले आना चाहिए।
मैं बहुत सारे पैकेज करता हूं, और एक पूर्ण करने के लिए कोई मामूली बात नहीं है। एक सकारात्मक नोट पर, फ़ाइलें और स्क्रिप्ट बहुत कम काम हैं। आप इस तरह के एक पैकेज बना सकते हैं, बहुत सरलता से, एक उपकरण के रूप में जिसे डीब्रीट कहा जाता है ।
डीब्रीट वास्तव में सरल जीयूआई है, केवल साधारण डीईबी पैकेज बनाने के लिए। आप बस निर्दिष्ट कर सकते हैं कि कौन सी फाइलें, वे कहाँ जाते हैं, और यदि / क्या पोस्ट / प्री इंस्टाल / अनइंस्टॉल पर अमल करना चाहिए। मैं अपने सभी पैकेजों को केवल मानक तरीके से करता था, लेकिन जब मैंने इस उपकरण का उपयोग करना शुरू किया, तब मैं केवल आवश्यक होने पर वापस जाऊंगा।
पैकेजिंग पर डेबियन विकी देखें , हो सकता है equivs
(लिंक देखें) पहले से ही आपकी आवश्यकताओं को पूरा करता है।
deb
फ़ाइल प्रारूप पर विकिपीडिया के पृष्ठ में कई उपयोगी लिंक भी शामिल हैं।
इसके 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 अब।
पैकेजों के त्वरित निर्माण के लिए आप प्रोग्राम की स्थापना रद्द कर सकते हैं। यह कार्यक्रम का एक वृत्तिकरण करता है, परिवर्तन देखता है - और इसका एक डेबिट या आरपीएम पैकेज बनाता है।
$ 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