मैं PPA कैसे बनाऊं?


123

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


संबंधित या एक ही: askubuntu.com/questions/28562/...
fossfreedom

हो सकता है कि यह पैकेजिंग
.ubuntu.com

जवाबों:


97

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

यहां एक विस्तृत विवरण दिया गया है


5
एफडब्ल्यूआईडब्ल्यू मैं आचार संहिता पर हस्ताक्षर करने से पहले अपने पीपीए को सक्रिय करने में सक्षम था।
4

2
यह सबसे अच्छा जवाब है। आपको सिर्फ PPA बनाने का तरीका बताया गया था। नीचे दी गई प्रतिक्रिया (कुल मिलाकर) PPA नहीं है, बल्कि यह एक सार्वजनिक भंडार है। दोनों एक ही चीज़ को पूरा करने के बावजूद (भिन्न) हैं। यहां तक ​​कि वह अपने उत्तर की पहली पंक्ति में कहता है: "इस प्रश्न में एक अच्छी तरह से लिखित, स्वीकृत उत्तर है। जैसा कि ओपी अपने पैकेजों को प्रकाशित करने का एक सरल तरीका चाहता है, मैं एक आसान हैक दे रहा हूं।" क्योंकि आप पसंद करते हैं आसान हैक यह सबसे अच्छा जवाब नहीं देता है।
lbaile200

ठीक है, लेकिन इस उत्तर में कोई भी लिंक वास्तव में यह नहीं बताता है कि इसे खरोंच से कैसे किया जाए। यहाँ सभी लिंक डेवलपर्स के लिए बनाए गए हैं, जो पहले से ही बहुत अधिक सामग्री में हैं
rubo77

1
@ rubo77 - "कैसे बनाने के लिए" सख्ती से जवाबदेह होने के लिए बहुत व्यापक है। यह सब निर्भर करता है कि आप क्या पैकेज करना चाह रहे हैं। वास्तव में उपरोक्त उत्तर में दिए गए प्रत्येक चरण में एक अच्छा विस्तृत उत्तर के साथ व्यक्तिगत क्यू हो सकता है।
जीवाश्म

1
टोटी का नया जवाब पहले से ही शानदार है
रुबो 7

86

कैसे एक .deb फ़ाइल बनाने के लिए

यह किसी दिए गए नमूना स्क्रिप्ट से एक मूल .deb फ़ाइल बनाने पर एक ट्यूटोरियल है। इस ट्यूटोरियल में हम पहले बैश में एक सैंपल प्रोग्राम बनाते हैं जो सिर्फ 'हेलो फ्रॉम प्रोग्राम' दिखाते हैं। फिर हम डेबियन इंस्टॉलर बनाने के लिए प्रोग्राम के लिए एक कंट्रोल फाइल बनाते हैं। अंत में उन्हें एक .debफाइल में पैक किया जाता है ।

कदम:

  1. बैश में एक नमूना कार्यक्रम बनाएँ

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    इसमें निम्न कोड पेस्ट करें

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. कार्यक्रम को निष्पादन योग्य बनाएं

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. डेबियन पैकेज के लिए कंट्रोल फाइल बनाएं

    controlफ़ोल्डर के अंदर नाम की एक फाइल बनाएंDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    और निम्नलिखित विवरण चिपकाएँ

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    आप चाहें तो कंटेंट को एडिट कर सकते हैं। इस फ़ाइल के प्रारूप के बारे में यहाँ और यहाँ पढ़ें ।

  4. postinstस्क्रिप्ट बनाएं , जिसे पैकेज की स्थापना के तुरंत बाद निष्पादित किया जाता है

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    फिर पेस्ट करें

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    और इसे निष्पादन योग्य बनाएं

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. prermस्क्रिप्ट बनाएँ , जिसे पैकेज से हटाने से पहले निष्पादित किया जाता है

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    और इसे निष्पादन योग्य बनाएं

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. पैकेज संरचना और कॉपी प्रोग्राम, डेटा इत्यादि
    बनाएं । अपने इंस्टॉल किए गए प्रोग्राम और उसके डेटा की संरचना बनाएं। इस उदाहरण में हमने फ़ाइल को यहाँ रखा है /bin

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. बिल्ड .deb फ़ाइल।

    dpkg-deb --build "$HOME"/create_deb .
    

    .इच्छा ऑटो नाम .debसंस्करण, मेहराब आदि या अपने कस्टम नाम के साथ फ़ाइल

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    या यदि आप .deb फ़ाइल का निर्माण करते हैं

    debuild -k'your GPG key here' -S
    

    तो आप इसे Ubuntu लॉन्चपैड के साथ अपलोड कर सकते हैं

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    जैसा यहाँ वर्णित है (स्रोत: स्क्रिप्ट या बायनेरिज़ से एक .deb पैकेज बनाएँ )

  8. नए बनाए गए .debपैकेज को स्थापित करें । आप इसे खोल सकते हैं, software-centerलेकिन यह आपको स्थापित करने की अनुमति नहीं दे सकता है। इसलिए मैं gdebiपैकेज मैनेजर का उपयोग करने की सलाह देता हूं ।

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    अब आप इसे इंस्टॉल कर सकते हैं। स्थापना के दौरान आपको एक gtk संवाद देखना चाहिए

    संस्थापन कार्यक्रम: zenity_hello.sh ......

  9. एक टर्मिनल खोलने और टाइप करने के बाद zenity_hello। यदि प्रोग्राम सही ढंग से स्थापित है और सब कुछ ठीक है तो आपको एक gtk संवाद देखना चाहिए

    प्रोगराम से हेलो

  10. पैकेज निकाल रहा है

    sudo apt-get remove zenity_hello
    

2 मिनट में अपनी रिपॉजिटरी प्रकाशित करें

जैसा कि ओपी अपने पैकेज प्रकाशित करने का एक सरल तरीका चाहता है, मैं एक आसान हैक दे रहा हूं।

आवश्यकता: ड्रॉपबॉक्स (। या के लिए पूर्व anyother सेवा, GitHub ) एक सार्वजनिक फ़ोल्डर के साथ खाते।

  1. अपने सार्वजनिक-ड्रॉपबॉक्स-फ़ोल्डर के अंदर एक फ़ोल्डर बनाएँ जहाँ आप अपनी * .deb फाइलें रखते हैं:

    mkdir ~/Dropbox/Public/deb-packages  
    

    या उस फ़ोल्डर को कहीं और बनाएं और अपने सार्वजनिक फ़ोल्डर में एक सिमलिंक डालें:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. उस फ़ोल्डर में जाएं और एक स्क्रिप्ट बनाएं, जिसे निष्पादित करते समय, अपने डेब्यू-पैकेज के बारे में सभी आवश्यक सूचनाओं से युक्त, संकुल.गज़ बनाता है। सृजन करना:

    gedit import.sh  
    

    इसे इसमें डालें:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    इसे निष्पादित करें:

    chmod  x import.sh
    
  3. कुछ * .deb फ़ाइलों को फ़ोल्डर में कॉपी करें। आपके अपने या कुछ ऐसे हो सकते हैं जो अन्य रिपॉजिटरी के माध्यम से उपलब्ध नहीं हैं। फिर फ़ोल्डर में जाएं और हमारे द्वारा वहां रखी गई स्क्रिप्ट को निष्पादित करें:

    cd ~/deb-packages/ 
    ./import.sh
    

    यह तथाकथित Package.gz फ़ाइल बनाना चाहिए , जो कि यह जानने के लिए उपयुक्त है कि कौन से पैकेज इस रिपॉजिटरी में स्थित हैं।


बस

अब, फ़ोल्डर को सिंक्रनाइज़ करने के लिए ड्रॉपबॉक्स की प्रतीक्षा करें और सार्वजनिक URL को इसमें सेPackages.gz पकड़ो । यह कुछ इस तरह दिखना चाहिए:

http://dl.getdropbox.../Packages.gz

उस लिंक के अंत से छुटकारा पाएं, इसके लिए कुछ और शब्द डालें और अब आप निम्न लाइन का उपयोग और पॉपुलेट कर सकते हैं। source.list:

deb http://dl.getdropbox.../deb-packages ./

यही कारण है कि आपको अपना डिबेट रिपॉजिटरी चल रहा है। हमेशा स्थानीय रूप से सिंक्रनाइज़, लेकिन किसी को भी, कभी भी, कहीं भी उपलब्ध है।

नोट: संदर्भ dpkg-scanpackagesसे उपलब्ध हैdpkg-dev


3
+1 महान! इस काम किया: मैं Github इस्तेमाल किया और वहाँ एक फ़ोल्डर के लिए कच्चे निर्देशिका releases/देख github.com/rubo77/mouse-speed/blob/master/release/...
rubo77

यह एक स्वयं की मेजबानी पीपीए का वर्णन करता है, लेकिन मैं एक उबंटू डेबियन पैकेज
rubo77

3
यदि आप चरण 7 में .deb फ़ाइल का निर्माण करते हैं। debuild -us -uc -k'your GPG key here'तब आप इसे dput ppa:<lp-username>/<ppa-name> packet-source.changesलॉन्चपैड के साथ यहां बताए अनुसार अपलोड कर सकते हैं (स्रोत: स्क्रिप्ट या बायनेरिज़ से एक .deb पैकेज बनाएं )
rubo77

@ rubo77, धन्यवाद, मैं अपने जवाब के अंत में इस इन्फोस को जोड़ने के लिए आपका स्वागत करता हूं।
जुती

1
ठीक है, मैंने अभी किया, मुझे यह भी पता चला, कि आपको लॉन्चपैड के लिए अन्य मापदंडों की आवश्यकता है। अभी (सिर्फ -S) फ़ाइल को बनाने के लिए नहीं: debuild -k'your GPG key here' -Sक्योंकि लॉन्चपैड डिबेट फ़ाइल बनाएगा (यदि यह अस्वीकार नहीं किया गया है) - क्या क्या `-स-uc` के लिए किया गया है?
रूबों 77।

2

PPA बनाने के लिए आपको एक Launchpad.net खाते की आवश्यकता होगी। बस लॉन्चपैड पर अपने उपयोगकर्ता पर क्लिक करें (ऊपरी बाएं तरफ अपने नाम पर क्लिक करें) और एक पीपीए बनाएं। आपको पहले आचार संहिता पर हस्ताक्षर करना पड़ सकता है और आपके खाते में एक GPG कुंजी पंजीकृत होनी चाहिए।

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