quilt の使い方

debianubuntudeb パッケージのメンテナンス(パッチの管理)で使う quilt コマンドの利用方法をまとめます

debパッケージのメンテナンスをしていると,以下の様なエラーが出る場合があります

Applying patch 04_hyphen-manpage.diff
patching file docs/man/django-admin.1
Hunk #1 FAILED at 194.
1 out of 1 hunk FAILED -- rejects in file docs/man/django-admin.1
Patch 04_hyphen-manpage.diff can be reverse-applied

つまり patch を当てるのに失敗しています

この場合 patch の修正が必要となりますが,quilt コマンドを使うとその作業が大幅に省力化できます

quilt の使い方 (エラーが出ない場合)

とりあえず

$ quilt

と実行すると quilt のサブコマンドの一覧が表示されます

まず,debパッケージに含まれるパッチの一覧は debian/patches フォルダ以下に保存されています.

$ quilt series

これで一覧が確認できます

debパッケージはこれらパッチを上から順にソースコードに適用していきます

先頭のパッチを適用するには

$ quilt push

とします

パッチが正しくあたった場合は,ひたすら quilt push を繰り返すと,どんどん次のパッチが適用されていきます

現在適用済みのパッチを確認するには

$ quilt applied

まだ適用していないパッチを確認するには

$ quilt unapplied

を実行します

またパッチを外す場合は

$ quilt pop

とします

pushやpopを繰り返すと次にどのパッチファイルがpushされるのか判らなくなる場合があります.その場合は

$ quilt next

で次にpushされるパッチが確認できます

quilt の使い方 (エラーが出た場合)

ここからが本題です

$ quilt push

でエラーが出た場合は次のような表示になります

Applying patch 04_hyphen-manpage.diff
patching file docs/man/django-admin.1
Hunk #1 FAILED at 194.
1 out of 1 hunk FAILED -- rejects in file docs/man/django-admin.1
Patch 04_hyphen-manpage.diff can be reverse-applied

この場合,パッチの内容は全て破棄され,ソースコードは quilt push する前の状態に戻ります

パッチを修正する作業に取り掛かる場合は,quilt push コマンドに "-f" を付けて実行します

$ quilt push -f

これで *.rej ファイルが生成されるので,後はソースコードを手作業で修正します

修正が終わったら

$ quilt refresh

を実行します

これで修正がパッチファイルに自動で反映されます.

まとめ

まとめると

  • quilt はパッチのリストを管理している
    • quilt applied / quilt unapplied で適用済み/適用前パッチの一覧が確認できる
  • パッチを適用するときは quilt push
    • quilt next で次にpushされるパッチのファイル名が確認できる
  • パッチを外すときは quilt pop
  • エラーがでるパッチを修正したい場合
    1. まず quilt push -f して rejファイルを作る
    2. rejファイルを見ながら,ソースコードを修正
    3. 修正が追わたら quilt refresh .これでパッチが自動更新される

となります


[入門] Debian パッケージ
やまだ あきら
技術評論社
売り上げランキング: 840,287