変更または新しいテキストファイルを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
私がしたこと:
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で正しくプッシュおよびビルドされることを確認 化け物
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
パッケージでこれをテストしましょう:
ソースを取得:apt-get source rhythmbox-plugin-llyrics
テキストファイルを変更し、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]
変更ログに追加し、dch -v 0.1-3ubuntu6~izx1
でバージョンを増やします
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
ビルドソース/変更:
$ 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サイズの違いに注意してください... )
これは、ファイルを追加するよりも少し難しいです。
最初に、新しいソースパッケージに含まれるバイナリで.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