cgit Debian パッケージ

先日 cgitDebian パッケージ を作りました。

APT リポジトリ も用意してあり試すことができます。 ただし公開中の cgit パッケージは開発途上のものであり無保証です。ご自身の責任でお使いください。

cgit は git リポジトリを web ブラウザで閲覧可能にする CGI アプリケーションで、要するに gitweb のようなものなのですが、 gitweb に比べて機能が豊富なこと、 C で書かれており高速なこと、プラグインにより拡張可能 (組み込み lua スクリプトも使用可能) なことなどが特徴になっています。

とりあえず動くパッケージができたので、公式パッケージにしたいと思い wnpp に ITP #739231 を出しました。ところが cgit の ITP はだいぶ前 (2009!) に #515793 としてすでに出ていたそうで、速攻で指摘されてそちらに merge されてしまいました。

そんな大昔から ITP が出ているのに、なんでいまだに公式パッケージに入れないのだろうと思うわけですが、それは cgit のソフトウェアおよびビルド構成に原因があります。

cgit はコアライブラリおよびビルドシステムとして git のコードベースそのものを用いています。つまり cgit をビルドするには git のソース一式が必要ということです。また git の内部ライブラリである libgit.axdiff/lib.a を静的にリンクした cgit バイナリのパッケージを作ってしまうことは、今後発生するかもしれないセキュリティ対応を考えると避けるべきこととされています (EmbeddedCodeCopies 参照)。そのためにどうすればいいか結論が出ないまま、放置されてここまで来てしまったということのようです。

おそらくいちばん理想的なのは、外部で独立にメンテナンスされている安定した git ライブラリ libgit2 を cgit にも使ってもらうことでしょう。 upstream はその方向に進もうとはしているようですが、実現はまだまだ先のようです。

現時点で Debian パッケージとしてとりうる選択肢は 3 つほどあります。

  1. cgit ソースパッケージに git ソースを入れてしまう
  2. git ソースパッケージに cgit ソースを入れてしまう
  3. git ソースパッケージから git ソース一式を含むバイナリパッケージを作ってもらい、 cgit がそれに Build-Depends: する

1. は私がとりあえず作ってしまったパッケージです。今後 git も含めたセキュリティ対応がちゃんとできればこれでいいんではと思っていたのですが、 #515793 の議論を読むとやっぱり受け入れられなさそうです。

2. は git パッケージのメンテナ Jonathan Nieder の提案によるもので、 cgit を git から生成するバイナリパッケージのひとつにしようというものです。たしかに cgit for Debian を世に出すには一番手っ取り早い方法ではありますが、複雑すぎる git ソースパッケージがさらに複雑になるし、メンテナンスも間違いなく大変になるので、個人的には反対の立場です。

3. は要するに git-source というバイナリパッケージを新たに作ろうというものです。私もこの方式がいいと思っており git パッケージを改造しようと見ているのですが、前述のとおり git ソースパッケージはえらい複雑で (debhelper も使っていない!) なかなか一筋縄ではいかなそうです。

ということで cgit の Debian 公式パッケージが実現するには、もう少し時間がかかりそうです。

2014/02/28 04:23:00 JST