मैं अपने मौजूदा पीपीए पैकेज में एक बाइनरी फ़ाइल कैसे जोड़ सकता हूं


10

मेरे PPA पैकेज में संशोधित या नई पाठ फ़ाइलें जोड़ना काफी सरल है:

चरण 1:

apt-get source [foo-package]
cd [foo-package]

चरण 2: परिवर्तन वाली नई पाठ फ़ाइलों को जोड़ें या संशोधित करें

चरण 3 - चैंज अपडेट करें:

dch -i

चरण 4 - एक पैच बनाएं

dpkg-source --commit

चरण 5 - एक स्रोत पैकेज बनाएं

debuild -S 

चरण 6 - लॉन्चपैड पर अपलोड करें

cd ..
dput [myppa]/[foo_source.changes]

हालाँकि, मुझे अब मौजूदा पैकेज में एक नई आइकन फ़ाइल (.png फ़ाइल) जोड़ने की आवश्यकता है।

तो चरण 2 पर - बस [फू-पैकेज] में कॉपी किया गया

पर चरण 4 - मैं निम्नलिखित त्रुटियाँ मिलती है:

dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source

यदि मैं चरण 5 में जाने का प्रयास करता हूं तो मुझे उपरोक्त अतिरिक्त त्रुटियां प्राप्त होती हैं:

dpkg-source: error: add foo-package/foo-icon.png in debian/source/include-binaries if you want to store the modified binary in the Debian tar-ball
...
dpkg-buildpackage -rfakeroot -d -us -uc -S failed

किसी भी विचार मैं अपने मौजूदा पीपीए पैकेज में बाइनरी आइकन फ़ाइल कैसे जोड़ूं?


अधिक जानकारी

चलाकर:

debuild -S --source-option=--include-binaries

यह तब स्रोत पैकेज बनाने के लिए अनुमति देता है और चरण 6 संभव है।

हालाँकि, यह वास्तव में उत्तर नहीं है - क्योंकि मैं बाद में आगे कोड परिवर्तन नहीं कर सकता ( चरण 2 ) क्योंकि मुझे अभी भी वही त्रुटियां मिल रही हैं।

ऐसा नहीं लगता कि मैं कर सकता हूं dpkg-source --commit --source-option=--include-binariesक्योंकि यह सिर्फ त्रुटियां देता है:

dpkg-source --commit --source-option=--include-binaries
dpkg-source: warning: --source-option=--include-binaries is not a valid option for Dpkg::Source::Package::V3::quilt
dpkg-source: error: cannot represent change to foo-package/foo-icon.png: binary file contents changed
dpkg-source: error: unrepresentable changes to source

जवाबों:


8

मैंने क्या किया:

apt-get source rhythmbox-plugin-llyrics
cd rhythmbox-plugin-llyrics-0.1/
echo '#Junk commit' >> llyrics/ChartlyricsParser.py
sed -i 's/Maintainer: fossfreedom <somewhere@xmail.com>/Maintainer: Andrew King (No comment) <newplace@ymail.com>/g' debian/control
sed -i 's/fossfreedom <somewhere@xmail.com>/Andrew King (No comment) <newplace@ymail.com>/g' debian/changelog
dpkg-source --commit

debuild -S -sa
mkdir debian/icons
cp ~/Pictures/awesome-cat.jpg ./debian/icons/
echo 'debian/icons/awesome-cat.jpg' > debian/source/include-binaries
cd ..
dpkg-source --include-binaries -b rhythmbox-plugin-llyrics-0.1
cd -
debuild -S

echo '#Junk commit' >> llyrics/ChartlyricsParser.py
dpkg-source --commit

#so now it's still allowing commits and in the deb-src...add it to install
echo 'debian/icons/* /usr/share/icons/hicolor/' >> debian/install
echo '' >> debian/install
debuild -S

#note that you should have the proper subfolders here e.g. 32x32/myicon.png or whatever
#also note that per packaging guidelines it should be one entry per file, not a wildcard

पुष्टि की कि यह लॉन्चपैड फॉसफ्रीडम पर सही ढंग से धक्का और निर्माण करता है


1
स्कीकी, भाई! <fistbump> उन uuencoders को सीधे सेट करने का समय? ;)
ईश

5

स्विच के साथ द्विआधारी फ़ाइलों को अनदेखा करने के लिए बस dpkg-source --commit प्राप्त extend-diff-ignoreकरें

यह करने का एक और सरल तरीका है: आप मूल रूप से dpkg-source को अनदेखा करने के लिए कहते हैं कि वह क्या समझ नहीं सकता है (यानी, द्विआधारी फाइलें), और अपने स्वयं के व्यवसाय को ध्यान में रखने के लिए;)

पहली बार एक बाइनरी फ़ाइल (एस) जोड़ने के बाद, कुंजी स्विच के dpkg-source --commitसाथ उपयोग करना है --extend-diff-ignore, साथ ही अनदेखा करने के लिए उपयुक्त पथ / फ़ाइल नाम (पर्ल रेगेक्स प्रारूप)।

उदाहरण के लिए, मान लें कि आप llyricsनिर्देशिका में PNGs का एक गुच्छा चिपकाते हैं , और फिर आप कुछ पाठ फ़ाइलों को संशोधित करते हैं। सही कमिट कॉल है:

dpkg-source --commit --extend-diff-ignore="(^|/)(llyrics/.*\.png)$"

उस के साथ पालन करें:

debuild -S --source-option=--include-binaries

अपना PPA अपलोड पाने के लिए।


चलो rhythmbox-plugin-llyricsfossfreedom के "खेल के मैदान" पीपीए से पैकेज के साथ इसका परीक्षण करें :

  1. स्रोत प्राप्त करें: apt-get source rhythmbox-plugin-llyrics

  2. एक पाठ फ़ाइल को संशोधित करें और एक PNG जोड़ें:

    $ cd रिदमबॉक्स-प्लगइन-लिलीट्रिक्स-0.1
    $ इको फोर्क्स-ए-डीआईएफएफ> लिलीट्रिक्स / आरईएडीएमई 
    $ wget -Ollyrics / dancemonkeyboy.png \
       http://www.samrethsingh.com/wp-content/uploads/2009/02/untitled-image.png
    ... `llyrics / dancemonkeyboy.png 'बचाया [243304/243304]
    
  3. चैंज के साथ जोड़ें और वृद्धि संस्करण के साथ dch -v 0.1-3ubuntu6~izx1

  4. PNG को अनदेखा करते हुए पाठ परिवर्तन करें:

    $ dpkg-source --commit --extend-diff-ign = "(^ | /) (llyrics (। \ _। png) $"।
    dpkg-source: info: स्थानीय परिवर्तन का पता चला, संशोधित फाइलें हैं:
    रिदमबॉक्स-प्लगइन-llyrics-0.1 / llyrics / README
    वांछित पैच नाम दर्ज करें: PPABinaryTest
    dpkg-source: info: स्थानीय परिवर्तन एक नए पैच में दर्ज किए गए हैं: रिदमबॉक्स-प्लगइन-लिलीट्रिक्स-0.1 / डेबियन / पैच / PPABinaryTest
    
  5. स्रोत / परिवर्तन बनाएँ:

    $ डेब्यूल्ड -एस - सोर्स-विकल्प = - शामिल-बायनेरी
    ...
    dpkg-source: info: मौजूदा का उपयोग करके रिदमबॉक्स-प्लगइन-लिलीट्रिक्स का निर्माण ।/rhythmbox-plugin-llyrics_0.1.orig.tar.gz
    dpkg-source: info: llyrics / dancemonkeyboy.png को डेबियन / स्रोत / शामिल-बायनेरी में जोड़ना
    ...
    

और ... देखा! ( लॉन्चपैड-निर्मित डिबेट - ~ 200k आकार अंतर पर ध्यान दें ... )


2

यह केवल एक फ़ाइल को जोड़ने की तुलना में थोड़ा कठिन है।

सबसे पहले, आपको नए स्रोत पैकेज में शामिल बायनेरिज़ के साथ .orig.tar.gz को फिर से बनाना होगा, और संभावना है कि दोनों टार में सॉफ्टवेयर संस्करण ( package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzया कुछ) और दोनों में वृद्धि की आवश्यकता होगी debian/changelog

नई फ़ाइलों के साथ Orig.tar.gz को संशोधित करने के बाद (मूल में फ़ाइलें / / शामिल नहीं करें ।.tz.gz), आप फिर एक debian/changelogप्रविष्टि जोड़ देंगे , संस्करण को बढ़ाने के लिए जैसा कि आपने किया था। GZ।

फिर स्रोत पैकेज ( debuild -S) का पुनर्निर्माण करें , और नए स्रोत पैकेज को पीपीए में अपलोड करें। वह नया स्रोत पैकेज पीपीए में "पुराने" को अधिलेखित कर देगा।


चैट से:

@LordofTime ... wouldnt launchpad complain that its just received a different original source file


@fossfreedom not if you increment the version
new version, new source
@fossfreedom if you don't increment the version it'll explode
so you must increment the version
also, make individual debian packages for each release of ubuntu
and it'll not yell as much (it'll still enforce original version)
i.e.
"I am updating the NGINX PPA from 1.2.2 to 1.2.3. I need to get the 1.2.3 source, and work from that."
"I change the package, and the .orig.tar.gz, and upload the new package to Launchpad."
"If there are no build errors, then i'm done. If there is a build error, then I damned well better fix that error."
(then reupload with 1.2.3-2 or something)
but generally i do build testing in a staging repo

हो सकता है कि यह उत्तर केवल "यदि आप उस संस्करण को नहीं बढ़ाते हैं जो यह विस्फोट होगा" को संपादित करके लाभान्वित होगा?
जोनास जी।

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

अफसोस की बात है कि मैं डेबियन पैकेजिंग प्रणाली से अपरिचित हूं, इसलिए ठीक यही वजह है कि यह मेरे से परे है। खुद द्वारा बनाया गया एक एडिट दर्दनाक रूप से अपर्याप्त होगा।
जोनास जी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.