dpatchの利用方法
dpatchとは
Debianのソースパッチを管理するツールです.
Debianパッケージでは,ソースパッケージは以下の構成になっています.
- .orig.tar.gz: オリジナルのtarball
- .diff.gz: Debianで作成した差分
- .dsc: dpkg用制御ファイル
この中で,.diff.gzは一つの大きな差分ファイルとして管理されるため,
どの部分がどういうパッチであるか,ということを管理してはくれません.
その部分を実装するのがdpatchです.
通常の.diff.gzであると,
debian/ディレクトリ以下のDebianパッケージング用の情報と
それ以外のソフトウェア自体への修正が混合しています.
それを整理するというものです.
dpatchでのファイル構成
dpatchでは,パッチをdebian/patches/patchname.dpatchという名前
で管理します.例えば,debian/patches/01_configure.dpatchという
名前をつけます.
そして,パッチの一覧をdebian/patches/00listに記述します.
そこでは,.dpatchを省略して01_configureというような形式で記述できます.
こうすることにより,Debianにおいての変更点がdebian/ディレクトリ以下に集まり,
また変更点をdebian/patchesディレクトリで分類して管理できる,という利点があります.
また,類似システムであるDBSと違う点が
- 上流パッケージをそのまま使える
- ビルドのたびに毎回tarで展開しなおしたりしない.
dpatchの利点
dpatchを利用する利点は,
どういうパッチをあてたのか,ということが分かりやすくなる,ということにあります.
また,変更点がdebian/以下だけになるため,debian/ディレクトリだけを
独立してCVS等のバージョン管理システムで管理することが可能です.
あと,微妙なツールがいろいろと充実しているっぽいのもそうでしょうか.
ただ,viが前提なようですので,dpatch-edit-patch等,emacsでは若干不自由なところもあります.
それを修正するつもりでdevscriptsパッケージにdpatch.elを作成しているのですが,
まだ未完成です.
dpatch管理のパッケージの新しいバージョンが出た場合の処理
dpatchで管理しているパッケージで,新しいバージョンが出た場合には,以下の作業が発生します.
- 前のバージョンからdebian/ディレクトリをコピーしてくる
- debian/patches/patchname.dpatchをそれぞれ
patch --dry-run -p1 で適用できるかどうか確認する
- debian/patches/00listを編集
- debian/rules patch
- 適用できないパッチの再作成
dpatchで新しくパッケージを作成する方法
README.Debianを参照してください.
- debian/rulesを変更し,dpatchを呼ぶように変更する.
/usr/share/doc/dpatch/examples/rules/rules.new.dh.gzを参考.
もしくは,2.0以前との互換性を重視して,
/usr/share/dpatch/dpatch.makeをincludeし,
cleanとconfigureのルールでpatchとunpatchルールが呼ばれるようにする(patch-stampとかを使う)
- debian/patches/00listを作成する, touch debian/patches/00listで可能
- dpatch-convert-diffgzを実行,とりあえずdpatchファイルに変換する
- dpatchファイルを適当に編集して複数ファイルに分割
確認するには
- debian/rules patchとdebian/rules unpatchが成功する
- dpkg-buildpackageで生成されるdiff.gzのdiffstatをとり,debian以下以外の場所にdiffができていないことを確認
dpatchであたらしくパッチを書く方法
dpatchを利用している場合にソースコードに手をいれる場合の手順を説明します.
- dpatch-edit-patch パッチ名とする.
例:dpatch-edit-patch 03_automake
もし他のパッチに依存する変更をするなら,そのパッチ名を入力します.
dpatch-edit-patch 03_automake 02_autoconf.
これを実施すると,/tmp以下に適当なディレクトリでソースが編集できるようにシェルが起動します.
- ソースを適当に編集します.
- exitすると,パッチファイルがdebian/patchesディレクトリ以下に生成されます.
- 生成されたパッチファイルに適当なコメントを書いておきます
- debian/patches/00listを適当に修正します
- debian/rules unpatchdebian/rules patchdebian/rules unpatchとして
一応パッチが動作することを確認します
すでにあるパッチを編集する方法
- dpatch-edit-patch パッチ名とする.例:dpatch-edit-patch 03_automake
- 編集する
- exit
参考文献
- /usr/share/doc/dpatch/README.gz
- dpatch-edit-patch(1)
- dpatch-list-patch(1)
- dpatch-convert-diffgz(1)
Junichi Uekawa
$Id: dpatch.html.ja,v 1.8 2005/07/03 13:19:27 dancer Exp $