Solaris10 上で gitweb をセットアップ

gitweb は git レポジトリを web ページとして公開するための CGI プログラムです。
本家サイトを含めてセットアップ方法を記述したサイトには沢山ありますが、Solaris 10上で getweb の構築記事は少なく、また Solaris 環境固有と思われる点ではまったところがありましたので構築メモを書いておきます。

ちなみに、gitweb のスナップショットがこちら。
http://git.kernel.org
f:id:kaizawa2:20101130234847p:image

github のように・・・とまではいきませんが、ちょっとした共有には十分かと思います。

環境と諸設定

  • OS: Solaris 10
  • Web サーバ: Apache(Solaris10バンドルのVersion 2.0.63) *1
  • Git レポジトリのルート: /data/git
  • CGI の格納場所: /var/apache2/htdocs/gitweb (デフォルトのドキュメントルート直下)
  • gitweb へのURL: http://サーバ名/gitweb/

git のインストール

gitweb 以前に git がセットアップされていなければ始まりません。
次の項目で紹介するソースからビルドしてもいいのですが、ここでは www.sunfreeware.com からバイナリパッケージをゲットしそれをインストールします。

$ wget ftp://ftp.sunfreeware.com/pub/freeware/sparc/10/git-1.7.2-sol10-sparc-local.gz
$ gunzip git-1.7.2-sol10-sparc-local.gz
# pkgadd -d git-1.7.2-sol10-sparc-local

上記は sparc Solaris のパッケージの場合の例です。x86 の場合は ftp://ftp.sunfreeware.com/pub/freeware/intel/10/git-1.7.2-sol10-x86-local.gz からダウンロードしてください。

gitweb CGI プログラムのビルド

gitのソースをゲット

gitweb ビルドするために まず git のソースをゲットしてきます。
git コマンドが使える環境で、かつインターネット上のリポジトリにアクセスできる環境なら以下のようにしてソースをダウンロードできます。

 $ git clone git://git.kernel.org/pub/scm/git/git.git

できなければ、普通にアーカイブファイルをダウンロードして展開します
http://kernel.org/pub/software/scm/git/git-1.7.3.2.tar.bz2

$ bunzip2 -c git-1.7.3.2.tar.bz2  | tar xvf -
 :
gitweb のビルド
$ cd git-1.7.3.2/gitweb
$ gmake GITWEB_PROJECTROOT="/data/git" prefix=/usr/local gitweb/gitweb.cgi

これで、gitweb ディレクトリが作成され、その中に gitweb.cgi が書き込まれます。
※ なお、上記例の通り、gmake で実行してください。(なければインストール!)バンドルの make だと以下のエラーがが出ます. (おそらく make が -include をサポートしていないため)

   make: Fatal error in reader: Makefile, line 244: Unexpected end of line seen

CGIプログラムを含むディレクトリのドキュメントルートへのコピー

デフォルトのドキュメントルートの下に getweb ディレクトリをコピーします。

# cp -rp gitweb /var/apache2/htdocs/

CGIに実行許可を与える

デフォルトではコピーしたディレクトリ配下の cgi プログラムに実行許可がありません。
Apache の設定ファイルである httpd.conf を編集し、gitweb/gitweb.cgi を実行可能にします。
また、CGI プログラムから呼ばれる git コマンドは libcrypt へのリンクが必要なため、SetEnv を追加して LD_LIBRARY_PATH 環境変数に /usr/sfw/ib を追記します。

なお、設定ファイルのひな形として httpd.conf-example ファイルが用意されていますので、こちらを httpd.conf という名前でコピーして使用します。

# cd /etc/apache2
# cp httpd.conf-example httpd.conf

/etc/apache2/httpd.conf に以下を追記。


     Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
     AllowOverride All
     order allow,deny
     Allow from all
     AddHandler cgi-script cgi
     DirectoryIndex gitweb.cgi

SetEnv LD_LIBRARY_PATH /usr/local/lib:/usr/sfw/lib

なお、ライブラリパスの設定については SetEnv で LD_LIBRARY_PATH を指定する代わりに crle(1) コマンドでシステムのデフォルトのサーチパスを追加するという方法もあります。

  • 設定例:(crleでライブラリサーチパスを追加する場合)
# /bin/crle -u -l /usr:/usr/lib:/usr/sfw/lib

※ /var/ld/ld.config ファイルが無い場合(デフォルトでは無い)/usr と /usr/lib は自動的に追加されるので明示的に指定する必要はありませんが、上記では念のため指定してます。
万一 which も ls もできない!といった自体になってしまって場合には慌てずオプションを再確認の上 crle コマンドを再実行してみてください。

Apache の再起動

最後に Apache を再起動します。


*1:※利用する Apache のバージョンを 2.0 系に変更しました。1.3 系の設定についてはページの最後部をご参照ください