আমি কীভাবে আমার বিদ্যমান পিপিএ প্যাকেজে বাইনারি ফাইল যুক্ত করব?


10

আমার পিপিএ প্যাকেজে পরিবর্তিত বা নতুন পাঠ্য ফাইল যুক্ত করা যথেষ্ট সহজ:

ধাপ 1:

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

পদক্ষেপ 2: পরিবর্তনগুলি যুক্ত নতুন পাঠ্য ফাইল যুক্ত বা সংশোধন করুন

পদক্ষেপ 3 - চেঞ্জলগ আপডেট করুন:

dch -i

পদক্ষেপ 4 - একটি প্যাচ তৈরি করুন

dpkg-source --commit

পদক্ষেপ 5 - একটি উত্স প্যাকেজ তৈরি করুন

debuild -S 

পদক্ষেপ - - লঞ্চপ্যাডে আপলোড করুন

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

যাইহোক, এখন আমার বিদ্যমান প্যাকেজটিতে একটি নতুন আইকন ফাইল (একটি .png ফাইল) যুক্ত করা দরকার।

সুতরাং দ্বিতীয় ধাপে - কেবল [foo- প্যাকেজ] অনুলিপি করা হয়েছে

পদক্ষেপ 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

এরপরে এটি উত্স প্যাকেজটি তৈরি করার অনুমতি দেয় এবং step ধাপ সম্ভব।

তবে এটি সত্যই উত্তর নয় - কারণ আমি পরে আরও কোড পরিবর্তন করতে পারি না ( পদক্ষেপ 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
সেক্সি, ভাই! <ফিস্টবাম্প> এই ইউউনকোডারদের সোজা করার সময়? ;)
ইশ

5

শুধু পেতে dpkg সোর্স --commit সঙ্গে বাইনারি ফাইল উপেক্ষা করার extend-diff-ignoreসুইচ

এটি করার আরও একটি সহজ উপায়: আপনি মূলত dpkg- উত্সটি যা বুঝতে পারে না তা উপেক্ষা করতে বলে (যেমন, বাইনারি ফাইলগুলি) এবং এর নিজস্ব ব্যবসায় মনে রাখতে;)

একটি বাইনারি ফাইল (গুলি) প্রথমবার যোগ করার পর, কী ব্যবহার করা হয় dpkg-source --commitসঙ্গে --extend-diff-ignore, সুইচ উপযুক্ত পাথ / ফাইলের নামের উপেক্ষা করার (পার্ল Regex ফরম্যাট) করেন।

উদাহরণস্বরূপ, ধরুন আপনি llyricsডিরেক্টরিতে PNG গুলি একটি গুচ্ছ আটকে রেখেছেন এবং তারপরে আপনি কিছু পাঠ্য ফাইল সংশোধন করছেন। সঠিক কমিট কলটি হ'ল:

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

এটি অনুসরণ করুন:

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

আপনার পিপিএ আপলোড পেতে।


আসুন rhythmbox-plugin-llyricsফসফ্রিডির "খেলার মাঠ" পিপিএ থেকে প্যাকেজটির সাথে এটি পরীক্ষা করি :

  1. উত্স পান: apt-get source rhythmbox-plugin-llyrics

  2. একটি পাঠ্য ফাইল পরিবর্তন করুন এবং একটি পিএনজি যুক্ত করুন:

    d সিডি রিথম্বক্স-প্লাগ-ইন-লিলিক্স -১.০
    FOR প্রতিধ্বনি ফোর্স-এ-ডিআইএফএফ >> লিলিরিক্স / পুনরায় পড়ুন 
    $ উইজেট -অলরিআরিক্স / ডান্সমোনকিবয়.পিএনজি \
       http://www.samrethsingh.com/wp-content/uploads/2009/02/untitled-image.png
    ... ly llyrics / dancemonkeyboy.png 'সংরক্ষিত [243304/243304]
    
  3. এর সাথে চেঞ্জলগ এবং ইনক্রিমেন্ট সংস্করণ যুক্ত করুন dch -v 0.1-3ubuntu6~izx1

  4. পিএনজি উপেক্ষা করার সময় পাঠ্য পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ:

    p dpkg- উত্স - কমিট --extend-diff-અવর্জন = "(^ | /) (llyrics /.* p। পিএনজি) $"
    dpkg- উত্স: তথ্য: স্থানীয় পরিবর্তনগুলি সনাক্ত হয়েছে, পরিবর্তিত ফাইলগুলি হ'ল:
    rhythmbox-প্লাগইন-llyrics-0.1 / llyrics / README
    কাঙ্ক্ষিত প্যাচের নাম লিখুন: পিপিএবাইনারিস্টেস্ট
    dpkg- উত্স: তথ্য: স্থানীয় পরিবর্তনগুলি একটি নতুন প্যাচে রেকর্ড করা হয়েছে: রিদম্বক্স-প্লাগইন-লিলারিক্স -১.০ / ডিবিয়ান / প্যাচস / পিপিএবাইনারিস্টেস্ট
    
  5. উত্স / পরিবর্তনগুলি তৈরি করুন:

    u ডেডবিল্ড-এস --সোর্স-অপশন = - অন্তর্ভুক্ত-বাইনারি
    ...
    dpkg- উত্স: তথ্য: বিদ্যমান ./rhythmbox- প্লাগিন-llyrics_0.1.orig.tar.gz ব্যবহার করে রিদম্বক্স-প্লাগইন-লিলিক তৈরি করা
    dpkg- উত্স: তথ্য: ডিবিয়ান / উত্স / অন্তর্ভুক্ত-বাইনারিগুলিতে llyrics / dancemonkeyboy.png যুক্ত করা
    ...
    

এবং ... ভাল খবর! ( লঞ্চপ্যাড-বিল্ট ডেব - 200k আকারের পার্থক্যটি নোট করুন ... )


2

এটি কেবল একটি ফাইল যুক্ত করার চেয়ে কিছুটা শক্ত।

প্রথমত, আপনাকে নতুন উত্স প্যাকেজে অন্তর্ভুক্ত বাইনারিগুলির সাহায্যে .orig.tar.gz পুনর্নির্মাণ করতে হবে এবং সম্ভবত সফ্টওয়্যার সংস্করণ ( package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzবা কিছু) ট্যারি এবং উভয়ই বৃদ্ধি করতে হবে debian/changelog

নতুন ফাইলগুলির সাথে অরিগ.আরটি.জেড সংশোধন করার পরে (অরিগ.আরটিজেজে ডেবিয়ান / ফাইলগুলি অন্তর্ভুক্ত করবেন না), আপনি তারপরে একটি debian/changelogএন্ট্রি যুক্ত করবেন, ওরিগ.আটারের মতো সংস্করণটিকে বাড়িয়ে তোলা হবে changing 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

এই উত্তরটি কেবল "আপনি যদি সংস্করণটি বৃদ্ধি করবেন না তবে এটি বিস্ফোরিত হবে না" তে সম্পাদনা করে উপকৃত হবে?
জোনাস জি ড্রেঞ্জ

জোনাসের উত্তরে আপনি সর্বদা একটি সম্পাদনার প্রস্তাব দিতে পারেন, এবং আপনি কেন মন্তব্যটি সম্পাদনাটি দরকারী বলে মন্তব্য করতে পারেন এবং আমি এবং অন্যরা এটি দেখে এবং এটি বিবেচনা করতে পারে।
টমাস ওয়ার্ড

দুঃখজনকভাবে আমি দেবিয়ান প্যাকেজিং সিস্টেমের সাথে অপরিচিত, তাই কেন এটি ফুটে উঠেছে তা আমার বাইরে। আমার দ্বারা সম্পাদিত একটি সম্পাদনা বেদনাদায়ক অপর্যাপ্ত হবে।
জোনাস জি ড্রেঞ্জ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.