既存のPPAパッケージにバイナリファイルを追加する方法


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で -[foo-package]にコピーされます

で、ステップ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

既存のPPAパッケージにバイナリアイコンファイルを追加するにはどうすればよいですか?


詳しくは

実行すると:

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

Launchpad fossfreedom を正しくプッシュおよびビルドすることを確認


1
Skeksi、bro!<fistbump>これらのuuencoderをまっすぐに設定する時間ですか?;)
ish

5

スイッチでバイナリファイルを無視するには、dpkg-source --commitを取得するだけですextend-diff-ignore

これを行うもう1つの簡単な方法を次に示します。基本的に、dpkg-sourceに、理解できないもの(バイナリファイルなど)を無視し、独自のビジネスを意識するように指示します;)

バイナリファイルを初めて追加した後、重要なのは、無視する適切なパス/ファイル名(Perl regex形式)dpkg-source --commitとともに、--extend-diff-ignoreスイッチで使用することです。

たとえば、llyricsディレクトリに多数のPNGを貼り付けてから、いくつかのテキストファイルを変更するとします。正しいcommit呼び出しは次のとおりです。

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

それに従ってください:

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

PPAアップロードを取得します。


これをrhythmbox-plugin-llyricsfossfreedomの「遊び場」PPAのパッケージでテストしてみましょう。

  1. ソースを取得: apt-get source rhythmbox-plugin-llyrics

  2. テキストファイルを変更し、PNGを追加します。

    $ cd rhythmbox-plugin-llyrics-0.1
    $ echo FORCE-A-DIFF >> llyrics / README 
    $ 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-ignore = "(^ | /)(llyrics /.* \。png)$"
    dpkg-source:info:ローカルの変更が検出されました。変更されたファイルは次のとおりです:
    rhythmbox-plugin-llyrics-0.1 / llyrics / README
    希望するパッチ名を入力してください:PPABinaryTest
    dpkg-source:info:ローカルの変更が新しいパッチに記録されました:rhythmbox-plugin-llyrics-0.1 / debian / patches / PPABinaryTest
    
  5. ビルドソース/変更:

    $ debuild -S --source-option =-include-binaries
    ...
    dpkg-source:info:既存の./rhythmbox-plugin-llyrics_0.1.orig.tar.gzを使用してrhythmbox-plugin-llyricsを構築する
    dpkg-source:情報:llyrics / dancemonkeyboy.pngをdebian / source / include-binariesに追加
    ...
    

そして...出来上がり!(Launchpadで構築されたdeb-〜200kのサイズの違いに注意してください...


2

これは単にファイルを追加するよりも少し難しいです。

まず、新しいソースパッケージに含まれているバイナリを使用して.orig.tar.gzを再構築する必要があり、tarとの両方でソフトウェアバージョン(package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzまたは何か)をインクリメントする必要がありますdebian/changelog

新しいファイルでorig.tar.gzを変更した後(orig.tar.gzにdebian /ファイルを含めないでください)、debian/changelogエントリを追加し、バージョンを変更して、orig.tarの場合と同じようにバージョンを増やします。 gz。

次に、ソースパッケージを再構築し(debuild -S)、新しいソースパッケージをPPAにアップロードします。その新しいソースパッケージは、PPAの「古い」パッケージを上書きします。


チャットから:

@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

たぶんこの答えは、「あなたが爆発するバージョンをインクリメントしない場合」に編集されることで利益を得るでしょうか?
Jonas G. Drange 2014年

いつでも回答Jonasへの編集を提案し、編集が有用であると考える理由をコメントすることができます。
トーマスワード

悲しいことに、私はDebianパッケージングシステムに慣れていないので、それが爆発する正確な理由は私を超えています。自分で行った編集は、ひどく不適切です。
Jonas G. Drange 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.