小林です。 From: Yukio Hashimoto Subject: [debian-users:48083] Re: arm版のtripwireについて Date: Tue, 20 Feb 2007 23:56:27 +0900 > >といっても、実のところ今回のように以前パッケージ化されたバージョンがあ > >る場合は、dh_make を使ってテンプレートを作成し、一からパッケージ化する > >必要はありません。古いバージョンのパッケージから debian ディレクトリを > >もってきてビルドを試し、それでうまくいかなかったらその原因を探って > >debian/* を調整、というのが楽でしょう。 > > なるほどそういう方法も有るんですね。 > 早速試してみます。 あまりパッケージの中身を見ないで話をしていましたが、ソースパッケージを ダウンロードして簡単に眺めてみました。で、わかったのですが、このパッケー ジは、初めてパッケージングを体験する人にはやや荷が重いかもしれません。 tripwire_2.3.1.2.0-9.diff.gz を眺めてみたところ、.diff.gz には (debian ディレクトリを追加する変更だけでなく) ソースコードを直接変更する変更が かなり多く加えられているようです(*)。 nori1[19:48]% zgrep "^+++" tripwire_2.3.1.2.0-9.diff.gz | grep -v "tripwire-2.3.1.2.0/debian" +++ tripwire-2.3.1.2.0/aclocal.m4 +++ tripwire-2.3.1.2.0/tw_config.h.in +++ tripwire-2.3.1.2.0/Makefile.am +++ tripwire-2.3.1.2.0/src/twcrypto/Makefile.in +++ tripwire-2.3.1.2.0/src/siggen/Makefile.am +++ tripwire-2.3.1.2.0/src/siggen/Makefile.in +++ tripwire-2.3.1.2.0/src/twparser/Makefile.in +++ tripwire-2.3.1.2.0/src/tripwire/Makefile.am +++ tripwire-2.3.1.2.0/src/tripwire/pipedmailmessage.cpp +++ tripwire-2.3.1.2.0/src/tripwire/Makefile.in +++ tripwire-2.3.1.2.0/src/tripwire/twcmdlineutil.cpp +++ tripwire-2.3.1.2.0/src/twadmin/Makefile.am +++ tripwire-2.3.1.2.0/src/twadmin/Makefile.in +++ tripwire-2.3.1.2.0/src/twprint/Makefile.am +++ tripwire-2.3.1.2.0/src/twprint/Makefile.in +++ tripwire-2.3.1.2.0/src/cryptlib/integer.cpp +++ tripwire-2.3.1.2.0/src/cryptlib/Makefile.am +++ tripwire-2.3.1.2.0/src/cryptlib/Makefile.in +++ tripwire-2.3.1.2.0/src/Makefile.in +++ tripwire-2.3.1.2.0/src/core/Makefile.am +++ tripwire-2.3.1.2.0/src/core/Makefile.in +++ tripwire-2.3.1.2.0/src/db/Makefile.am +++ tripwire-2.3.1.2.0/src/db/Makefile.in +++ tripwire-2.3.1.2.0/src/tw/Makefile.in +++ tripwire-2.3.1.2.0/src/tw/fcoreport.h +++ tripwire-2.3.1.2.0/src/fco/fconame.h +++ tripwire-2.3.1.2.0/src/fco/Makefile.am +++ tripwire-2.3.1.2.0/src/fco/fcosetimpl.h +++ tripwire-2.3.1.2.0/src/fco/Makefile.in +++ tripwire-2.3.1.2.0/src/util/Makefile.in +++ tripwire-2.3.1.2.0/src/fs/fsparserutil.cpp +++ tripwire-2.3.1.2.0/src/fs/Makefile.in +++ tripwire-2.3.1.2.0/src/fs/fsstrings.h +++ tripwire-2.3.1.2.0/src/fs/fsstrings.cpp +++ tripwire-2.3.1.2.0/install-sh +++ tripwire-2.3.1.2.0/missing +++ tripwire-2.3.1.2.0/mkinstalldirs +++ tripwire-2.3.1.2.0/configure +++ tripwire-2.3.1.2.0/man/man8/twprint.8 +++ tripwire-2.3.1.2.0/man/man8/tripwire.8 +++ tripwire-2.3.1.2.0/man/man8/twadmin.8 +++ tripwire-2.3.1.2.0/man/man8/Makefile.in +++ tripwire-2.3.1.2.0/man/man8/siggen.8 +++ tripwire-2.3.1.2.0/man/man8/twintro.8 +++ tripwire-2.3.1.2.0/man/man5/twfiles.5 +++ tripwire-2.3.1.2.0/man/man5/Makefile.in +++ tripwire-2.3.1.2.0/man/Makefile.in +++ tripwire-2.3.1.2.0/man/man4/twpolicy.4 +++ tripwire-2.3.1.2.0/man/man4/twconfig.4 +++ tripwire-2.3.1.2.0/man/man4/Makefile.in +++ tripwire-2.3.1.2.0/Makefile.in (*) 現在ではソースコードを直接変更するのは推奨されておらず、dpatch や quilt などのパッチ管理システムを使用して、全ての変更を debian/patches などにパッチとして収め、ビルド時にそれを当てることが推奨されています。 ソースコードを直接変更する変更がかなり多く加えられているため、「古いバー ジョンのパッケージから debian ディレクトリをもってきてビルドを試す」と いうのだけではうまくいかず、tripwire_2.3.1.2.0-9.diff.gz 全体をパッチ としてソースコードに当てる必要があります。このときに、既に開発元のソー スコード(tripwire 2.4.0.1 の .tar.gz) に含まれている変更もあるので、う まく当たらないことがあります。 とりあえず適当に当ててみます。 nori1[20:09]% tar jxf tripwire-2.4.0.1-src.tar.bz2 whale:~/tripwire/2.4.0.1 nori1[20:09]% cd tripwire-2.4.0.1 whale:~/tripwire/2.4.0.1 nori1[20:09]% gzip -dc ../tripwire_2.3.1.2.0-9.diff.gz | patch -p1 patching file aclocal.m4 patching file tw_config.h.in patching file Makefile.am patching file src/twcrypto/Makefile.in patching file src/siggen/Makefile.am Hunk #1 FAILED at 1. 1 out of 1 hunk FAILED -- saving rejects to file src/siggen/Makefile.am.rej patching file src/siggen/Makefile.in patching file src/twparser/Makefile.in patching file src/tripwire/Makefile.am Hunk #1 FAILED at 1. 1 out of 2 hunks FAILED -- saving rejects to file src/tripwire/Makefile.am.rej patching file src/tripwire/pipedmailmessage.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] n Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file src/tripwire/pipedmailmessage.cpp.rej patching file src/tripwire/Makefile.in patching file src/tripwire/twcmdlineutil.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] n Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file src/tripwire/twcmdlineutil.cpp.rej patching file src/twadmin/Makefile.am Hunk #1 FAILED at 1. 1 out of 1 hunk FAILED -- saving rejects to file src/twadmin/Makefile.am.rej patching file src/twadmin/Makefile.in patching file src/twprint/Makefile.am Hunk #1 FAILED at 1. 1 out of 1 hunk FAILED -- saving rejects to file src/twprint/Makefile.am.rej patching file src/twprint/Makefile.in patching file src/cryptlib/integer.cpp patching file src/cryptlib/Makefile.am Hunk #1 FAILED at 1. Hunk #2 succeeded at 12 with fuzz 2 (offset 3 lines). 1 out of 2 hunks FAILED -- saving rejects to file src/cryptlib/Makefile.am.rej patching file src/cryptlib/Makefile.in patching file src/Makefile.in patching file src/core/Makefile.am Hunk #1 FAILED at 1. 1 out of 2 hunks FAILED -- saving rejects to file src/core/Makefile.am.rej patching file src/core/Makefile.in patching file src/db/Makefile.am Hunk #1 FAILED at 1. 1 out of 2 hunks FAILED -- saving rejects to file src/db/Makefile.am.rej patching file src/db/Makefile.in patching file src/tw/Makefile.in patching file src/tw/fcoreport.h patching file src/fco/fconame.h patching file src/fco/Makefile.am Hunk #1 FAILED at 1. 1 out of 2 hunks FAILED -- saving rejects to file src/fco/Makefile.am.rej patching file src/fco/fcosetimpl.h patching file src/fco/Makefile.in patching file src/util/Makefile.in patching file src/fs/fsparserutil.cpp patching file src/fs/Makefile.in patching file src/fs/fsstrings.h patching file src/fs/fsstrings.cpp patching file install-sh patching file debian/overrides patching file debian/postinst patching file debian/po/de.po patching file debian/po/sv.po patching file debian/po/ja.po patching file debian/po/templates.pot patching file debian/po/cs.po patching file debian/po/pt_BR.po patching file debian/po/nl.po patching file debian/po/POTFILES.in patching file debian/po/pt.po patching file debian/po/es.po patching file debian/po/da.po patching file debian/po/fr.po patching file debian/copyright patching file debian/twcfg.txt patching file debian/changelog patching file debian/twpol.txt patching file debian/autogen.sh patching file debian/templates patching file debian/config patching file debian/README.debian patching file debian/rules patching file debian/compat patching file debian/watch patching file debian/control patching file debian/postrm patching file debian/cron.daily patching file debian/preinst patching file missing patching file mkinstalldirs patching file configure patching file man/man8/twprint.8 patching file man/man8/tripwire.8 patching file man/man8/twadmin.8 patching file man/man8/Makefile.in patching file man/man8/siggen.8 patching file man/man8/twintro.8 patching file man/man5/twfiles.5 patching file man/man5/Makefile.in patching file man/Makefile.in patching file man/man4/twpolicy.4 patching file man/man4/twconfig.4 patching file man/man4/Makefile.in patching file Makefile.in で、新しいバージョンのエントリを debian/changelog に追加します。 nori1[20:23]% dch -v 2.4.0.1-1 whale:~/tripwire/2.4.0.1/tripwire-2.4.0.1 [snip] あとは、.orig.tar.gz を作成し、debian/rules を実行可能にしておきましょう。 nori1[20:24]% bunzip2 -c ../tripwire-2.4.0.1-src.tar.bz2 | gzip -9 > ../tripwire_2.4.0.1.orig.tar.gz nori1[20:36]% chmod 755 debian/rules whale:~/tripwire/2.4.0.1/tripwire-2.4.0.1 で、ビルドしてみます (自分は sarge を使っているので、sid のパッケージ は pbuilder の chroot 環境を使用しています)。 nori1[20:38]% cd debian whale:~/tripwire/2.4.0.1/tripwire-2.4.0.1 nori1[20:38]% pdebuild --use-pdebuild-internal [snip] config.status: creating tw_config.h config.status: executing depfiles commands configure: WARNING: you should use --build, --host, --target configure: WARNING: you should use --build, --host, --target checking build system type... i486-pc-linux-gnu checking host system type... Invalid configuration `dummy': machine `dummy' not recognized configure: error: /bin/sh ./config.sub dummy failed make: *** [config-stamp] Error 1 Copying back the cached apt archive contents -> unmounting dev/pts filesystem -> unmounting proc filesystem -> unmounting /home/nori1/tripwire/2.4.0.1 filesystem -> cleaning the build env -> removing directory /var/cache/pbuilder/build//17234 and its subdirectories ということで、適当にパッチを当てるだけではダメで、もうちょっと調整が必 要なようです (2.3.1.2.0-9 のパッケージをもう少し綺麗なかたちにしてから 2.4.0.1-1 をパッケージングした方がいいかも?)。 こんな感じなので、自分で挑戦してみる価値はありますが、できなくてもあま りガッカリしないでください。そして、これに凝りてパッケージングを諦めよ う、とは思わないでください。;-) 現在 tripwire はメンテナがいなく QA team が必要最小限のメンテナンスを していますが、http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=321113 にて Daniel Baumann がメンテの意思を表明しているので、彼がパッケージを 改良してくれることに期待したいところです。Daniel はパッチ管理システム の使用などについてうるさいので、もう少しパッケージとしていいかたちにし てくれるはずです。膨大なパッケージのメンテしたりスポンサーしたりしてい る方なので、いつ作業してもらえるかやや気にはなりますが。 -- |: Noritada KOBAYASHI |: Dept. of General Systems Studies, |: Graduate School of Arts and Sciences, Univ. of Tokyo |: E-mail: nori1@xxxxxxxxxxxxxxxxxxxxxxx (preferable) |: nori@xxxxxxxxxxxxxxxxxxx |: Key fingerprint = AB26 9533 81DA 997B 3C06 4380 19BB ADA0 695C 9F53
Attachment:
pgph3iHjBgWMP.pgp
Description: PGP signature