CentOS5.3でgit1.6.5.1をビルドした

RPMForgeにあるRPMは古いし、ドキュメントも入ってないので手動でビルドしてみることに。
http://git-scm.com/download
に公式のRPMがあることを知ったけど、1.6系のような新しいバージョンはFedora用のRPMでライブラリの依存が面倒くさいことになってたので使わないことに。

で、ふつうにソースを拾ってきてビルドしてみたんだけど、これが思ったより大変だったのでメモ。

perl Makefile.PLのPREFIX指定がコケる

./configure --prefix=/opt/git && make

したら

/usr/bin/perl Makefile.PL PREFIX='/opt/git'
Only one of PREFIX or INSTALL_BASE can be given.  Not both.

とエラー。prefixの指定を外してもperl Makefile.PLがPREFIXを指定しようとして、INSTALL_BASEとぶつかる。

m-takagiから「とりあえずINSTALL見れ(意訳)」と言われたので確認してみるも、結果は変わらず。ただ、makeの引数がよく分かったのは収穫。というか、いきなり何も考えずに./configureとかするのはいい加減やめよう。

エラーメッセージでググっても有用な情報が無くて参ってたんだけど、ふと思い至ったのが、local::libの設定。PERL_MM_OPTにINSTALL_BASEが設定されていて、それがぶつかってたらしい。なので、

PERL_MM_OPT='' make prefix=/opt/git

と書いて解決。これはgit特有の問題じゃなくて、local::lib使ってると時々ありそうだから覚えておこう。

■asciidocがコケる

INSTALLの内容に従って

PERL_MM_OPT='' make prefix=/opt/git all doc info

でmakeすると

    ASCIIDOC git-filter-branch.html
ERROR: unsafe: include file: /etc/asciidoc/./stylesheets/xhtml11.css
ERROR: unsafe: include file: /etc/asciidoc/./stylesheets/xhtml11-manpage.css

で終了。これは/etc/asciidoc/stylesheetsがsymlinkなのが問題らしい。asciidoc --unsafeでsafe modeをoffにすればこのエラーを回避できるらしいので、Documentation/MakefileのASCIIDOCの項目を

ASCIIDOC=asciidoc --unsafe

とオプション付きに変更して解決。

■xmltoがコケる

今度はこんなエラーに遭遇。

    XMLTO git-filter-branch.1
xmlto: input does not validate (status 1)
/home/ryo/src/git-1.6.5.1/Documentation/git-filter-branch.xml:444: parser error : PCDATA invalid Char value 7
Clone it with <literal>git clone +++0+++</literal>.  The clone
                                    ^
/home/ryo/src/git-1.6.5.1/Documentation/git-filter-branch.xml:444: parser error : PCDATA invalid Char value 7
Clone it with <literal>git clone +++0+++</literal>.  The clone
                                      ^

力業で押さえ込むpatchを見付けて、もうこれでいいやと思ったので、手動で該当部分の「+++」を消して解決。


これで、CentOS5.3(x86_64)で無事にgit1.6.5.1が動作しました。まだ入れたばっかりだから、本当にちゃんと動くかまでチェック出来てないけど。