web-dev-qa-db-ja.com

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

変更または新しいテキストファイルを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
10
fossfreedom

私がしたこと:

apt-get source rhythmbox-plugin-llyrics
cd rhythmbox-plugin-llyrics-0.1/
echo '#Junk commit' >> llyrics/ChartlyricsParser.py
sed -i 's/Maintainer: fossfreedom <[email protected]>/Maintainer: Andrew King (No comment) <[email protected]>/g' debian/control
sed -i 's/fossfreedom <[email protected]>/Andrew King (No comment) <[email protected]>/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で正しくプッシュおよびビルドされることを確認 化け物

8
RobotHumans

dpkg-source --commitを取得して、extend-diff-ignoreスイッチでバイナリファイルを無視します。

これを行うもう1つの簡単な方法は、基本的にdpkg-sourceに理解できないもの(つまり、バイナリファイル)を無視し、独自のビジネス;)

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

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

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

それに従ってください:

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

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


Fossfreedomの「遊び場」PPAからのrhythmbox-plugin-llyricsパッケージでこれをテストしましょう:

  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を使用してrhythmbox-plugin-llyricsを構築-plugin-llyrics_0.1.orig.tar.gz 
     dpkg-source:情報:llyrics/dancemonkeyboy.pngをdebian/source/include-binaries 
     ... 
    に追加

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

5
ish

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

最初に、新しいソースパッケージに含まれるバイナリで.orig.tar.gzを再構築する必要があり、おそらくソフトウェアバージョン(package_1.0.0.orig.tar.gz-> package_1.0.1.orig.tar.gzまたは何か)の両方を増やす必要がありますtarおよび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
2
Thomas Ward